* [GIT PULL] nilfs2 changes for 7.4-rc1
@ 2026-10-16 22:27 Viacheslav Dubeyko
0 siblings, 0 replies; only message in thread
From: Viacheslav Dubeyko @ 2026-10-16 22:27 UTC (permalink / raw)
To: torvalds
Cc: linux-nilfs, linux-fsdevel, linux-kernel, konishi.ryusuke,
vdubeyko, qwe.aldo, hemanth.selam, southampton.jake.labelle,
r772577952, joshua.crofts1
Hello Linus,
Aldo Ariel Panzardo has fixed the issues in nilfs_sufile_get_suinfo(),
nilfs_scan_dsync_log(), and nilfs_find_or_create_root():
- If the requested segment number is greater than the total
number of segments, the function may process segment numbers
outside the filesystem.
- nilfs_scan_dsync_log() trusts the block counts in each on-disk file
information entry. If fi_ndatablk is greater than fi_nblocks,
the data block loop can consume excessive summary entries and
the later subtraction used to derive the number of node blocks
underflows.
- nilfs_find_or_create_root() links a new checkpoint root into the
checkpoint tree and drops ns_cptree_lock before creating the root's
sysfs group. If nilfs_sysfs_create_snapshot_group() then fails, the
root is freed while it is still reachable from ns_cptree, so a
concurrent nilfs_lookup_root() can dereference freed memory.
Hemanth Selam has fixed typos in comments, reported by
scripts/checkpatch.pl using the misspelling list in
scripts/spelling.txt.
Jake Labelle has fixed issues in nilfs_recover_dsync_blocks() and
nilfs_readdir():
- During roll-forward recovery, nilfs_recover_dsync_blocks() obtains
the inode designated by fi_ino of a dsync log without checking its
type. Regular files, directories, and symlinks are the only inode
types with data blocks to recover; reject anything else before
touching its block mapping.
- nilfs_readdir() uses ctx->pos, which userspace can set to
an arbitrary value via llseek, as an offset into the directory
folio and parses whatever bytes sit there as a directory entry.
Snap unaligned positions onto a valid entry boundary by walking
the rec_len chain from the chunk start before parsing.
Jiaming Zhang has fixed the issue in logic of clearing the dirty
folios. When garbage collection fails, nilfs2 rolls the DAT metadata
file's page cache back to a shadow copy taken before GC started.
nilfs_clear_dirty_pages() drops the dirty state of the folios
in the DAT cache, then nilfs_copy_back_pages() overwrites them with
the saved contents and warns if one is still dirty. Add a force flag
to nilfs_clear_dirty_pages() and nilfs_clear_folio_dirty() that
skips the busy buffer check, and set it in the two calls from
nilfs_mdt_restore_from_shadow_map().
Joshua Crofts has removed dead code and commented code sections in
nilfs_new_inode(), nilfs_read_inode_common(), and nilfs_setup_super().
Ryusuke Konishi has fixed multiple issues:
- While the recent out-of-bounds memory access issue in
nilfs_direct_propagate() has already been fixed, adds extra checks
to catch and gracefully handle similar potential bugs.
- Fix syzbot reported deadlock between nilfs_evict_inode() and
find_inode() by removing the synchronous log writer trigger from
nilfs_evict_inode().
- Fix an omitted clear of the dirty flag on backing device buffers,
which could cause an abnormal buffer state and potential block
overwriting data corruption.
- Improve stability by preventing errors caused by user interrupts
while waiting for log writes, which are triggered by synchronous
write flags following operations such as rename().
- Refactor the metadata file writeback callback function,
restructuring an inefficient legacy function organization rooted in
the era of aops->writepage() to align with aops->writepages().
- Fix a link count underflow during rmdir on a directory with a
corrupted link count (an issue recently reported by syzbot).
Viacheslav Dubeyko implemented the elimination of blockdev_direct_IO()
from nilfs2 entirely. It adds iomap.h with declaration of iomaps
operations and iomap.c with implementation of nilfs_iomap_begin().
The nilfs_direct_IO() and the .direct_IO callback on nilfs_aops are
removed. The nilfs_file_read_iter() dispatches O_DIRECT reads to
iomap_dio_rw() using nilfs_iomap_ops. Everything else still goes
through generic_file_read_iter().
The following changes since commit
cee9395acd8043be0644b25c34bfa86623f2b935:
Linux 7.3-rc1 (2026-08-30 13:34:40 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/vdubeyko/nilfs2.git
tags/nilfs2-v7.4-tag1
for you to fetch changes up to
de7f49c12566cc5c7437a2f26c6c754b9d4d5648:
nilfs2: validate directory position after llseek in readdir (2026-10-
08 09:39:43 -0700)
----------------------------------------------------------------
nilfs2 updates for v7.4
- nilfs2: validate directory position after llseek in readdir
- nilfs2: reject non-regular inodes in dsync recovery
- nilfs2: fix link count underflow when removing corrupted directory
- nilfs2: simplify nilfs_mdt_writeback()
- nilfs2: ignore non-fatal signals during synchronous log write wait
- nilfs2: clear dirty flag on bdev buffers on log write failure
- nilfs2: fix deadlock between nilfs_evict_inode() and find_inode()
- nilfs2: fix checkpoint root lifetime on sysfs errors
- nilfs2: switch O_DIRECT to iomap based operations
- nilfs2: add iomap operations for direct I/O
- nilfs2: validate file block counts during recovery
- nilfs2: force clear dirty state when restoring from the shadow map
- nilfs2: validate segment number in nilfs_sufile_get_suinfo()
- nilfs2: fix typos in comments
- nilfs2: remove '#if 0' code blocks
- nilfs2: strengthen consistency checks in nilfs_direct_propagate()
----------------------------------------------------------------
Aldo Ariel Panzardo (3):
nilfs2: validate segment number in nilfs_sufile_get_suinfo()
nilfs2: validate file block counts during recovery
nilfs2: fix checkpoint root lifetime on sysfs errors
Hemanth Selam (1):
nilfs2: fix typos in comments
Jake Labelle (2):
nilfs2: reject non-regular inodes in dsync recovery
nilfs2: validate directory position after llseek in readdir
Jiaming Zhang (1):
nilfs2: force clear dirty state when restoring from the shadow
map
Joshua Crofts (1):
nilfs2: remove '#if 0' code blocks
Ryusuke Konishi (6):
nilfs2: strengthen consistency checks in nilfs_direct_propagate()
nilfs2: fix deadlock between nilfs_evict_inode() and find_inode()
nilfs2: clear dirty flag on bdev buffers on log write failure
nilfs2: ignore non-fatal signals during synchronous log write
wait
nilfs2: simplify nilfs_mdt_writeback()
nilfs2: fix link count underflow when removing corrupted
directory
Viacheslav Dubeyko (2):
nilfs2: add iomap operations for direct I/O
nilfs2: switch O_DIRECT to iomap based operations
fs/nilfs2/Kconfig | 2 +-
fs/nilfs2/Makefile | 2 +-
fs/nilfs2/dir.c | 34 ++++++++++++++++++++++++
fs/nilfs2/direct.c | 6 +++++
fs/nilfs2/file.c | 42 +++++++++++++++++++++++++++---
fs/nilfs2/inode.c | 28 +-------------------
fs/nilfs2/ioctl.c | 2 +-
fs/nilfs2/iomap.c | 72
+++++++++++++++++++++++++++++++++++++++++++++++++++
fs/nilfs2/iomap.h | 13 ++++++++++
fs/nilfs2/mdt.c | 44 ++++++++++---------------------
fs/nilfs2/namei.c | 8 +++++-
fs/nilfs2/page.c | 50 ++++++++++++++++++++---------------
fs/nilfs2/page.h | 4 +--
fs/nilfs2/recovery.c | 24 ++++++++++++++++-
fs/nilfs2/segment.c | 12 +++++----
fs/nilfs2/sufile.c | 12 ++++++---
fs/nilfs2/super.c | 10 +++----
fs/nilfs2/sysfs.c | 5 +++-
fs/nilfs2/the_nilfs.c | 34 ++++++++++++++----------
19 files changed, 285 insertions(+), 119 deletions(-)
create mode 100644 fs/nilfs2/iomap.c
create mode 100644 fs/nilfs2/iomap.h
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-16 22:27 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-16 22:27 [GIT PULL] nilfs2 changes for 7.4-rc1 Viacheslav Dubeyko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®