summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-03-31 17:57:06 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2025-04-06 19:13:45 -0400
commit20974c001e927bacac790882228898d5d56b7295 (patch)
tree62e1fb775c597a319a0a8e59f86e31b006d6c6ca
parent95220b5116649d5bf0c9951ac8f600920a7421d4 (diff)
bcachefs: alloc_request.ptrs2
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--fs/bcachefs/alloc_foreground.c14
-rw-r--r--fs/bcachefs/alloc_foreground.h1
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;