Commit a672fb8f authored by Kent Overstreet's avatar Kent Overstreet Committed by Kent Overstreet

bcachefs: Make sure to go rw if lazy in fsck

The paths where we delete or truncate inodes don't pass commit flags for
BTREE_INSERT_LAZY_RW, so just go rw if necessary in the fsck code.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 7af0cec3
......@@ -1265,6 +1265,8 @@ static int check_inode(struct btree_trans *trans,
u.bi_inum))) {
bch_verbose(c, "deleting inode %llu", u.bi_inum);
bch2_fs_lazy_rw(c);
ret = bch2_inode_rm(c, u.bi_inum);
if (ret)
bch_err(c, "error in fsck: error %i while deleting inode", ret);
......@@ -1277,6 +1279,8 @@ static int check_inode(struct btree_trans *trans,
u.bi_inum))) {
bch_verbose(c, "truncating inode %llu", u.bi_inum);
bch2_fs_lazy_rw(c);
/*
* XXX: need to truncate partial blocks too here - or ideally
* just switch units to bytes and that issue goes away
......
......@@ -221,6 +221,15 @@ void bch2_fs_read_only(struct bch_fs *);
int bch2_fs_read_write(struct bch_fs *);
int bch2_fs_read_write_early(struct bch_fs *);
/*
* Only for use in the recovery/fsck path:
*/
static inline void bch2_fs_lazy_rw(struct bch_fs *c)
{
if (percpu_ref_is_zero(&c->writes))
bch2_fs_read_write_early(c);
}
void bch2_fs_stop(struct bch_fs *);
int bch2_fs_start(struct bch_fs *);
......
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