diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-01-23 15:49:44 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2019-01-23 15:53:32 -0500 |
commit | 35fca2f044d375b1590f499cfd34bef38ca0f8f1 (patch) | |
tree | c3906079fe4de190de30690bd2725e4bb0a28b0a /libbcachefs/alloc_foreground.c | |
parent | 1c50d258e3462cd0e0f76570685092910fc11873 (diff) |
Update bcachefs sources to 99750eab4d bcachefs: Persist stripe blocks_used
Diffstat (limited to 'libbcachefs/alloc_foreground.c')
-rw-r--r-- | libbcachefs/alloc_foreground.c | 18 |
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); |