summaryrefslogtreecommitdiff
path: root/libbcachefs/alloc_background.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-06-11 18:13:40 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2022-06-11 18:14:06 -0400
commitffbf806d5ccd6af99ef14ac970b5dc973c50432b (patch)
tree7734346bd5fd71370f191101aad29c1509b2ef4d /libbcachefs/alloc_background.c
parent6ac37db8415c636607d878c16af8346df55668f4 (diff)
Update bcachefs sources to 3704d0779c bcachefs: Improved human readable integer parsing
Diffstat (limited to 'libbcachefs/alloc_background.c')
-rw-r--r--libbcachefs/alloc_background.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/libbcachefs/alloc_background.c b/libbcachefs/alloc_background.c
index d114ba09..86df10e6 100644
--- a/libbcachefs/alloc_background.c
+++ b/libbcachefs/alloc_background.c
@@ -1190,12 +1190,26 @@ void bch2_do_invalidates(struct bch_fs *c)
queue_work(system_long_wq, &c->invalidate_work);
}
+static int bucket_freespace_init(struct btree_trans *trans, struct btree_iter *iter)
+{
+ struct bch_alloc_v4 a;
+ struct bkey_s_c k;
+ int ret;
+
+ k = bch2_btree_iter_peek_slot(iter);
+ ret = bkey_err(k);
+ if (ret)
+ return ret;
+
+ bch2_alloc_to_v4(k, &a);
+ return bch2_bucket_do_index(trans, k, &a, true);
+}
+
static int bch2_dev_freespace_init(struct bch_fs *c, struct bch_dev *ca)
{
struct btree_trans trans;
struct btree_iter iter;
struct bkey_s_c k;
- struct bch_alloc_v4 a;
struct bch_member *m;
int ret;
@@ -1208,10 +1222,9 @@ static int bch2_dev_freespace_init(struct bch_fs *c, struct bch_dev *ca)
if (iter.pos.offset >= ca->mi.nbuckets)
break;
- bch2_alloc_to_v4(k, &a);
ret = __bch2_trans_do(&trans, NULL, NULL,
BTREE_INSERT_LAZY_RW,
- bch2_bucket_do_index(&trans, k, &a, true));
+ bucket_freespace_init(&trans, &iter));
if (ret)
break;
}