mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 10:11:52 -04:00
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: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
committed by
Kent Overstreet
parent
7af0cec307
commit
a672fb8f5d
@@ -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 *);
|
||||
|
||||
Reference in New Issue
Block a user