summaryrefslogtreecommitdiff
path: root/libbcachefs/alloc_background.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-06-07 13:30:40 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2021-06-08 22:55:14 -0400
commit58ae103b0a2b5d881d6e8ff68fe17bb822148ce7 (patch)
tree4c794fc614fdf2d5e2521d335ef721b4c17f1d1e /libbcachefs/alloc_background.c
parentf6d87e9a87859dbf9b15269d4de165cf3aadf661 (diff)
Update bcachefs sources to e3a7cee503 bcachefs: Don't mark superblocks past end of usable space
Diffstat (limited to 'libbcachefs/alloc_background.c')
-rw-r--r--libbcachefs/alloc_background.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/libbcachefs/alloc_background.c b/libbcachefs/alloc_background.c
index da634739..2324b81c 100644
--- a/libbcachefs/alloc_background.c
+++ b/libbcachefs/alloc_background.c
@@ -340,9 +340,9 @@ retry:
return 0;
bch2_alloc_pack(c, &a, new_u);
- bch2_trans_update(trans, iter, &a.k,
- BTREE_TRIGGER_NORUN);
- ret = bch2_trans_commit(trans, NULL, NULL,
+ ret = bch2_trans_update(trans, iter, &a.k,
+ BTREE_TRIGGER_NORUN) ?:
+ bch2_trans_commit(trans, NULL, NULL,
BTREE_INSERT_NOFAIL|flags);
err:
if (ret == -EINTR)
@@ -726,7 +726,8 @@ static int bucket_invalidate_btree(struct btree_trans *trans,
u.write_time = atomic64_read(&c->io_clock[WRITE].now);
bch2_alloc_pack(c, a, u);
- bch2_trans_update(trans, iter, &a->k, BTREE_TRIGGER_BUCKET_INVALIDATE);
+ ret = bch2_trans_update(trans, iter, &a->k,
+ BTREE_TRIGGER_BUCKET_INVALIDATE);
err:
bch2_trans_iter_put(trans, iter);
return ret;
@@ -836,6 +837,11 @@ static int bch2_invalidate_buckets(struct bch_fs *c, struct bch_dev *ca)
while (!ret &&
!fifo_full(&ca->free_inc) &&
ca->alloc_heap.used) {
+ if (kthread_should_stop()) {
+ ret = 1;
+ break;
+ }
+
ret = bch2_invalidate_one_bucket(c, ca, &journal_seq,
(!fifo_empty(&ca->free_inc)
? BTREE_INSERT_NOWAIT : 0));