Commit 002c76dc authored by Kent Overstreet's avatar Kent Overstreet

bcachefs: check_root() can now be run online

check_root() is simple enough to run as one single transaction, so is
trivial to run online.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 38ced43b
...@@ -1950,14 +1950,10 @@ static int check_root_trans(struct btree_trans *trans) ...@@ -1950,14 +1950,10 @@ static int check_root_trans(struct btree_trans *trans)
root_subvol.v.flags = 0; root_subvol.v.flags = 0;
root_subvol.v.snapshot = cpu_to_le32(snapshot); root_subvol.v.snapshot = cpu_to_le32(snapshot);
root_subvol.v.inode = cpu_to_le64(inum); root_subvol.v.inode = cpu_to_le64(inum);
ret = commit_do(trans, NULL, NULL, ret = bch2_btree_insert_trans(trans, BTREE_ID_subvolumes, &root_subvol.k_i, 0);
BCH_TRANS_COMMIT_no_enospc,
bch2_btree_insert_trans(trans, BTREE_ID_subvolumes,
&root_subvol.k_i, 0));
bch_err_msg(c, ret, "writing root subvol"); bch_err_msg(c, ret, "writing root subvol");
if (ret) if (ret)
goto err; goto err;
} }
ret = __lookup_inode(trans, BCACHEFS_ROOT_INO, &root_inode, &snapshot); ret = __lookup_inode(trans, BCACHEFS_ROOT_INO, &root_inode, &snapshot);
...@@ -1984,9 +1980,7 @@ static int check_root_trans(struct btree_trans *trans) ...@@ -1984,9 +1980,7 @@ static int check_root_trans(struct btree_trans *trans)
/* Get root directory, create if it doesn't exist: */ /* Get root directory, create if it doesn't exist: */
int bch2_check_root(struct bch_fs *c) int bch2_check_root(struct bch_fs *c)
{ {
int ret; int ret = bch2_trans_do(c, NULL, NULL, BCH_TRANS_COMMIT_no_enospc,
ret = bch2_trans_do(c, NULL, NULL, BCH_TRANS_COMMIT_no_enospc,
check_root_trans(trans)); check_root_trans(trans));
bch_err_fn(c, ret); bch_err_fn(c, ret);
return ret; return ret;
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
x(check_indirect_extents, 26, PASS_FSCK) \ x(check_indirect_extents, 26, PASS_FSCK) \
x(check_dirents, 27, PASS_FSCK) \ x(check_dirents, 27, PASS_FSCK) \
x(check_xattrs, 28, PASS_FSCK) \ x(check_xattrs, 28, PASS_FSCK) \
x(check_root, 29, PASS_FSCK) \ x(check_root, 29, PASS_ONLINE|PASS_FSCK) \
x(check_directory_structure, 30, PASS_FSCK) \ x(check_directory_structure, 30, PASS_FSCK) \
x(check_nlinks, 31, PASS_FSCK) \ x(check_nlinks, 31, PASS_FSCK) \
x(delete_dead_inodes, 32, PASS_FSCK|PASS_UNCLEAN) \ x(delete_dead_inodes, 32, PASS_FSCK|PASS_UNCLEAN) \
......
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