summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-09-28 02:44:12 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2024-10-04 20:25:31 -0400
commit20826fe6b810bce3efba9ef5d74cf13ebe5f23d9 (patch)
treee295779db0127962dab00b603df7b9e88b2bc22e
parent6b63a948a73ba3df0fb3ab0c44807df344bc5bbf (diff)
bcachefs: Fix reattach_inode()
Ensure a copy of the lost+found inode exists in the snapshot that we're reattaching, so that we don't trigger warnings in lookup_inode_for_snapshot() later. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--fs/bcachefs/fsck.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/fs/bcachefs/fsck.c b/fs/bcachefs/fsck.c
index 351de61c7ed1..881ad5b9447f 100644
--- a/fs/bcachefs/fsck.c
+++ b/fs/bcachefs/fsck.c
@@ -354,13 +354,12 @@ static int reattach_inode(struct btree_trans *trans,
if (ret)
return ret;
- if (S_ISDIR(inode->bi_mode)) {
- lostfound.bi_nlink++;
+ lostfound.bi_nlink += S_ISDIR(inode->bi_mode);
- ret = __bch2_fsck_write_inode(trans, &lostfound, U32_MAX);
- if (ret)
- return ret;
- }
+ /* ensure lost+found inode is also present in inode snapshot */
+ ret = __bch2_fsck_write_inode(trans, &lostfound, inode_snapshot);
+ if (ret)
+ return ret;
dir_hash = bch2_hash_info_init(c, &lostfound);