diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2018-11-25 01:09:44 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:08:12 +0300 |
commit | dfe9bfb32e380df67d25cd5afb887b3466230e03 (patch) | |
tree | 165d9ff7b5a4e9c3e701b69758be49e9e91edaf2 /fs/bcachefs/quota.c | |
parent | ad7ae8d63fa82e5d713e73a1a6a4ca9728f84898 (diff) | |
download | linux-dfe9bfb32e380df67d25cd5afb887b3466230e03.tar.xz |
bcachefs: Stripes now properly subject to gc
gc now verifies the contents of the stripes radix tree, important for
persistent alloc info
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/quota.c')
-rw-r--r-- | fs/bcachefs/quota.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/fs/bcachefs/quota.c b/fs/bcachefs/quota.c index 8127f4454dac..cc20742d542b 100644 --- a/fs/bcachefs/quota.c +++ b/fs/bcachefs/quota.c @@ -700,22 +700,19 @@ static int bch2_get_next_quota(struct super_block *sb, struct kqid *kqid, struct bch_fs *c = sb->s_fs_info; struct bch_memquota_type *q = &c->quotas[kqid->type]; qid_t qid = from_kqid(&init_user_ns, *kqid); - struct genradix_iter iter = genradix_iter_init(&q->table, qid); + struct genradix_iter iter; struct bch_memquota *mq; int ret = 0; mutex_lock(&q->lock); - while ((mq = genradix_iter_peek(&iter, &q->table))) { + genradix_for_each_from(&q->table, iter, mq, qid) if (memcmp(mq, page_address(ZERO_PAGE(0)), sizeof(*mq))) { __bch2_quota_get(qdq, mq); *kqid = make_kqid(current_user_ns(), kqid->type, iter.pos); goto found; } - genradix_iter_advance(&iter, &q->table); - } - ret = -ENOENT; found: mutex_unlock(&q->lock); |