bcachefs: alloc_request.ptrs2
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 31 Mar 2025 21:57:06 +0000 (17:57 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 22 May 2025 00:13:40 +0000 (20:13 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/alloc_foreground.c
fs/bcachefs/alloc_foreground.h

index 642d226435589256447b7ff98ce2c05947a12937..f546b4fcd58f9fb883fc1025facb58ba32e7c03e 100644 (file)
@@ -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;
 }
 
 /*
index 7117e1e5c6d9c169b1a6ca40f118dc0b27d483d3..ae8ca3b7786bbcf8464d862e02d76500d4c3f30f 100644 (file)
@@ -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;