From: Kent Overstreet Date: Mon, 31 Mar 2025 21:57:06 +0000 (-0400) Subject: bcachefs: alloc_request.ptrs2 X-Git-Tag: v6.16-rc1~211^2~200 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=95f2315af7536c220301421eff6291c80ec321e5;p=thirdparty%2Fkernel%2Flinux.git bcachefs: alloc_request.ptrs2 Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/alloc_foreground.c b/fs/bcachefs/alloc_foreground.c index 642d226435589..f546b4fcd58f9 100644 --- a/fs/bcachefs/alloc_foreground.c +++ b/fs/bcachefs/alloc_foreground.c @@ -825,18 +825,19 @@ static bool want_bucket(struct bch_fs *c, static int bucket_alloc_set_writepoint(struct bch_fs *c, struct alloc_request *req) { - struct open_buckets ptrs_skip = { .nr = 0 }; struct open_bucket *ob; unsigned i; int ret = 0; + req->ptrs2.nr = 0; + open_bucket_for_each(c, &req->wp->ptrs, ob, i) { if (!ret && want_bucket(c, req, ob)) ret = add_new_bucket(c, req, ob); else - ob_push(c, &ptrs_skip, ob); + ob_push(c, &req->ptrs2, ob); } - req->wp->ptrs = ptrs_skip; + req->wp->ptrs = req->ptrs2; return ret; } @@ -1209,11 +1210,12 @@ static noinline void deallocate_extra_replicas(struct bch_fs *c, struct alloc_request *req) { - struct open_buckets ptrs2 = { 0 }; struct open_bucket *ob; unsigned extra_replicas = req->nr_effective - req->nr_replicas; unsigned i; + req->ptrs2.nr = 0; + open_bucket_for_each(c, &req->ptrs, ob, i) { unsigned d = ob_dev(c, ob)->mi.durability; @@ -1221,11 +1223,11 @@ deallocate_extra_replicas(struct bch_fs *c, extra_replicas -= d; ob_push(c, &req->wp->ptrs, ob); } else { - ob_push(c, &ptrs2, ob); + ob_push(c, &req->ptrs2, ob); } } - req->ptrs = ptrs2; + req->ptrs = req->ptrs2; } /* diff --git a/fs/bcachefs/alloc_foreground.h b/fs/bcachefs/alloc_foreground.h index 7117e1e5c6d9c..ae8ca3b7786bb 100644 --- a/fs/bcachefs/alloc_foreground.h +++ b/fs/bcachefs/alloc_foreground.h @@ -36,6 +36,7 @@ struct alloc_request { /* These fields are used primarily by open_bucket_add_buckets */ struct open_buckets ptrs; + struct open_buckets ptrs2; unsigned nr_effective; /* sum of @ptrs durability */ bool have_cache; /* have we allocated from a 0 durability dev */ struct bch_devs_mask devs_may_alloc;