diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2020-05-25 21:57:06 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:08:40 +0300 |
commit | 00b8ccf7074fddb5607a26673f331ceac2ecd319 (patch) | |
tree | 2d8468865754bd7075b2370706423c4fcf70b450 /fs/bcachefs/move.c | |
parent | c823c3390bd2f325f78bab493f84ea8a84f5ddc2 (diff) | |
download | linux-00b8ccf7074fddb5607a26673f331ceac2ecd319.tar.xz |
bcachefs: Interior btree updates are now fully transactional
We now update the alloc info (bucket sector counts) atomically with
journalling the update to the interior btree nodes, and we also set new
btree roots atomically with the journalled part of the btree update.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/move.c')
-rw-r--r-- | fs/bcachefs/move.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/fs/bcachefs/move.c b/fs/bcachefs/move.c index 882e86e70db7..02cc5089a163 100644 --- a/fs/bcachefs/move.c +++ b/fs/bcachefs/move.c @@ -774,14 +774,8 @@ int bch2_data_job(struct bch_fs *c, ret = bch2_move_btree(c, rereplicate_pred, c, stats) ?: ret; - while (1) { - closure_wait_event(&c->btree_interior_update_wait, - !bch2_btree_interior_updates_nr_pending(c) || - c->btree_roots_dirty); - if (!bch2_btree_interior_updates_nr_pending(c)) - break; - bch2_journal_meta(&c->journal); - } + closure_wait_event(&c->btree_interior_update_wait, + !bch2_btree_interior_updates_nr_pending(c)); ret = bch2_replicas_gc2(c) ?: ret; |