From 20974c001e927bacac790882228898d5d56b7295 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Mon, 31 Mar 2025 17:57:06 -0400 Subject: bcachefs: alloc_request.ptrs2 Signed-off-by: Kent Overstreet --- fs/bcachefs/alloc_foreground.c | 14 ++++++++------ fs/bcachefs/alloc_foreground.h | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/fs/bcachefs/alloc_foreground.c b/fs/bcachefs/alloc_foreground.c index dcb49a55016e..4d26aa340c38 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 90b5d4b44ac8..34035dac6e43 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; -- cgit v1.2.3