]> www.infradead.org Git - users/jedix/linux-maple.git/commit
nilfs2: do not propagate ENOENT error from nilfs_btree_propagate()
authorRyusuke Konishi <konishi.ryusuke@gmail.com>
Mon, 28 Apr 2025 17:37:08 +0000 (02:37 +0900)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 12 May 2025 00:54:12 +0000 (17:54 -0700)
commit8e39fbb1edbb4ec9d7c1124f403877fc167fcecd
treed00c2b7b51db673e36b95b2ce03d52babca0d8af
parentf43f02429295486059605997bc43803527d69791
nilfs2: do not propagate ENOENT error from nilfs_btree_propagate()

In preparation for writing logs, in nilfs_btree_propagate(), which makes
parent and ancestor node blocks dirty starting from a modified data block
or b-tree node block, if the starting block does not belong to the b-tree,
i.e.  is isolated, nilfs_btree_do_lookup() called within the function
fails with -ENOENT.

In this case, even though -ENOENT is an internal code, it is propagated to
the log writer via nilfs_bmap_propagate() and may be erroneously returned
to system calls such as fsync().

Fix this issue by changing the error code to -EINVAL in this case, and
having the bmap layer detect metadata corruption and convert the error
code appropriately.

Link: https://lkml.kernel.org/r/20250428173808.6452-3-konishi.ryusuke@gmail.com
Fixes: 1f5abe7e7dbc ("nilfs2: replace BUG_ON and BUG calls triggerable from ioctl")
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Cc: Wentao Liang <vulab@iscas.ac.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/nilfs2/btree.c