Commit 72350ee0 authored by Kent Overstreet's avatar Kent Overstreet

bcachefs: Kill snapshot arg to fsck_write_inode()

It was initially believed that it would be better to be explicit about
the snapshot we're updating when writing inodes in fsck; however, it
turns out that passing around the snapshot separately is more error
prone and we're usually updating the inode in the same snapshow we read
it from.

This is different from normal filesystem paths, where we do the update
in the snapshot of the subvolume we're in.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent c9306a91
This diff is collapsed.
...@@ -387,9 +387,7 @@ int bch2_inode_write_flags(struct btree_trans *trans, ...@@ -387,9 +387,7 @@ int bch2_inode_write_flags(struct btree_trans *trans,
return bch2_trans_update(trans, iter, &inode_p->inode.k_i, flags); return bch2_trans_update(trans, iter, &inode_p->inode.k_i, flags);
} }
int __bch2_fsck_write_inode(struct btree_trans *trans, int __bch2_fsck_write_inode(struct btree_trans *trans, struct bch_inode_unpacked *inode)
struct bch_inode_unpacked *inode,
u32 snapshot)
{ {
struct bkey_inode_buf *inode_p = struct bkey_inode_buf *inode_p =
bch2_trans_kmalloc(trans, sizeof(*inode_p)); bch2_trans_kmalloc(trans, sizeof(*inode_p));
...@@ -398,19 +396,17 @@ int __bch2_fsck_write_inode(struct btree_trans *trans, ...@@ -398,19 +396,17 @@ int __bch2_fsck_write_inode(struct btree_trans *trans,
return PTR_ERR(inode_p); return PTR_ERR(inode_p);
bch2_inode_pack(inode_p, inode); bch2_inode_pack(inode_p, inode);
inode_p->inode.k.p.snapshot = snapshot; inode_p->inode.k.p.snapshot = inode->bi_snapshot;
return bch2_btree_insert_nonextent(trans, BTREE_ID_inodes, return bch2_btree_insert_nonextent(trans, BTREE_ID_inodes,
&inode_p->inode.k_i, &inode_p->inode.k_i,
BTREE_UPDATE_internal_snapshot_node); BTREE_UPDATE_internal_snapshot_node);
} }
int bch2_fsck_write_inode(struct btree_trans *trans, int bch2_fsck_write_inode(struct btree_trans *trans, struct bch_inode_unpacked *inode)
struct bch_inode_unpacked *inode,
u32 snapshot)
{ {
int ret = commit_do(trans, NULL, NULL, BCH_TRANS_COMMIT_no_enospc, int ret = commit_do(trans, NULL, NULL, BCH_TRANS_COMMIT_no_enospc,
__bch2_fsck_write_inode(trans, inode, snapshot)); __bch2_fsck_write_inode(trans, inode));
bch_err_fn(trans->c, ret); bch_err_fn(trans->c, ret);
return ret; return ret;
} }
......
...@@ -112,8 +112,8 @@ static inline int bch2_inode_write(struct btree_trans *trans, ...@@ -112,8 +112,8 @@ static inline int bch2_inode_write(struct btree_trans *trans,
return bch2_inode_write_flags(trans, iter, inode, 0); return bch2_inode_write_flags(trans, iter, inode, 0);
} }
int __bch2_fsck_write_inode(struct btree_trans *, struct bch_inode_unpacked *, u32); int __bch2_fsck_write_inode(struct btree_trans *, struct bch_inode_unpacked *);
int bch2_fsck_write_inode(struct btree_trans *, struct bch_inode_unpacked *, u32); int bch2_fsck_write_inode(struct btree_trans *, struct bch_inode_unpacked *);
void bch2_inode_init_early(struct bch_fs *, void bch2_inode_init_early(struct bch_fs *,
struct bch_inode_unpacked *); struct bch_inode_unpacked *);
......
...@@ -102,7 +102,8 @@ static int check_subvol(struct btree_trans *trans, ...@@ -102,7 +102,8 @@ static int check_subvol(struct btree_trans *trans,
inode.bi_inum, inode.bi_snapshot, inode.bi_inum, inode.bi_snapshot,
inode.bi_subvol, subvol.k->p.offset)) { inode.bi_subvol, subvol.k->p.offset)) {
inode.bi_subvol = subvol.k->p.offset; inode.bi_subvol = subvol.k->p.offset;
ret = __bch2_fsck_write_inode(trans, &inode, le32_to_cpu(subvol.v->snapshot)); inode.bi_snapshot = le32_to_cpu(subvol.v->snapshot);
ret = __bch2_fsck_write_inode(trans, &inode);
if (ret) if (ret)
goto err; goto err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment