mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
bcachefs: Fix a quota read bug
bch2_fs_quota_read() could see an inode that's been deleted (KEY_TYPE_inode_generation) - bch2_fs_quota_read_inode() needs to check for that instead of erroring. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
c26463ce99
commit
e7ffda565a
1 changed files with 8 additions and 1 deletions
|
@ -576,6 +576,13 @@ static int bch2_fs_quota_read_inode(struct btree_trans *trans,
|
|||
le32_to_cpu(s_t.master_subvol),
|
||||
k.k->p.offset,
|
||||
}, &u);
|
||||
/*
|
||||
* Inode might be deleted in this snapshot - the easiest way to handle
|
||||
* that is to just skip it here:
|
||||
*/
|
||||
if (bch2_err_matches(ret, ENOENT))
|
||||
goto advance;
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -615,7 +622,7 @@ int bch2_fs_quota_read(struct bch_fs *c)
|
|||
POS_MIN, BTREE_ITER_PREFETCH|BTREE_ITER_ALL_SNAPSHOTS, k,
|
||||
bch2_fs_quota_read_inode(&trans, &iter, k));
|
||||
if (ret)
|
||||
bch_err(c, "err in quota_read: %s", bch2_err_str(ret));
|
||||
bch_err(c, "%s: err %s", __func__, bch2_err_str(ret));
|
||||
|
||||
bch2_trans_exit(&trans);
|
||||
return ret;
|
||||
|
|
Loading…
Add table
Reference in a new issue