summaryrefslogtreecommitdiff
path: root/libbcachefs/alloc_foreground.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-01-23 15:49:44 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2019-01-23 15:53:32 -0500
commit35fca2f044d375b1590f499cfd34bef38ca0f8f1 (patch)
treec3906079fe4de190de30690bd2725e4bb0a28b0a /libbcachefs/alloc_foreground.c
parent1c50d258e3462cd0e0f76570685092910fc11873 (diff)
Update bcachefs sources to 99750eab4d bcachefs: Persist stripe blocks_used
Diffstat (limited to 'libbcachefs/alloc_foreground.c')
-rw-r--r--libbcachefs/alloc_foreground.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/libbcachefs/alloc_foreground.c b/libbcachefs/alloc_foreground.c
index 14e6453b..f2f9015d 100644
--- a/libbcachefs/alloc_foreground.c
+++ b/libbcachefs/alloc_foreground.c
@@ -106,6 +106,7 @@ void __bch2_open_bucket_put(struct bch_fs *c, struct open_bucket *ob)
bch2_mark_alloc_bucket(c, ca, PTR_BUCKET_NR(ca, &ob->ptr),
false, gc_pos_alloc(c, ob), 0);
ob->valid = false;
+ ob->type = 0;
spin_unlock(&ob->lock);
percpu_up_read_preempt_enable(&c->mark_lock);
@@ -141,6 +142,7 @@ static struct open_bucket *bch2_open_bucket_alloc(struct bch_fs *c)
ob = c->open_buckets + c->open_buckets_freelist;
c->open_buckets_freelist = ob->freelist;
atomic_set(&ob->pin, 1);
+ ob->type = 0;
c->open_buckets_nr_free--;
return ob;
@@ -209,9 +211,9 @@ static inline unsigned open_buckets_reserved(enum alloc_reserve reserve)
case RESERVE_ALLOC:
return 0;
case RESERVE_BTREE:
- return BTREE_NODE_RESERVE / 2;
+ return BTREE_NODE_OPEN_BUCKET_RESERVE;
default:
- return BTREE_NODE_RESERVE;
+ return BTREE_NODE_OPEN_BUCKET_RESERVE * 2;
}
}
@@ -837,15 +839,17 @@ struct write_point *bch2_alloc_sectors_start(struct bch_fs *c,
{
struct write_point *wp;
struct open_bucket *ob;
- unsigned nr_effective = 0;
- struct open_buckets ptrs = { .nr = 0 };
- bool have_cache = false;
- unsigned write_points_nr;
- int ret = 0, i;
+ struct open_buckets ptrs;
+ unsigned nr_effective, write_points_nr;
+ bool have_cache;
+ int ret, i;
BUG_ON(!nr_replicas || !nr_replicas_required);
retry:
+ ptrs.nr = 0;
+ nr_effective = 0;
write_points_nr = c->write_points_nr;
+ have_cache = false;
wp = writepoint_find(c, write_point.v);