diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-08-20 17:46:22 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2019-08-20 17:59:26 -0400 |
commit | 5b4ffa0d30191e0563e96d1f68332044a4b9f4e3 (patch) | |
tree | cbca53f1a91eb8cff06354345ab9232ac402c921 | |
parent | 19e0c04f7bb3ea622fb5d0e0a1893d583ea44eff (diff) |
bcachefs: Move node iterator fixup to extent_bset_insert()
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r-- | fs/bcachefs/extents.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c index 3796fb856579..c40cbdd5df9f 100644 --- a/fs/bcachefs/extents.c +++ b/fs/bcachefs/extents.c @@ -916,6 +916,16 @@ static void extent_bset_insert(struct bch_fs *c, struct btree_iter *iter, bch2_extent_merge_inline(c, iter, bkey_to_packed(insert), k, false)) return; + /* + * may have skipped past some deleted extents greater than the insert + * key, before we got to a non deleted extent and knew we could bail out + * rewind the iterator a bit if necessary: + */ + node_iter = l->iter; + while ((k = bch2_btree_node_iter_prev_all(&node_iter, l->b)) && + bkey_cmp_left_packed(l->b, k, &insert->k.p) > 0) + l->iter = node_iter; + k = bch2_btree_node_iter_bset_pos(&l->iter, l->b, bset_tree_last(l->b)); bch2_bset_insert(l->b, &l->iter, k, insert, 0); @@ -1204,19 +1214,6 @@ next: overlap == BCH_EXTENT_OVERLAP_MIDDLE) break; } - - /* - * may have skipped past some deleted extents greater than the insert - * key, before we got to a non deleted extent and knew we could bail out - * rewind the iterator a bit if necessary: - */ - { - struct btree_node_iter node_iter = l->iter; - - while ((_k = bch2_btree_node_iter_prev_all(&node_iter, l->b)) && - bkey_cmp_left_packed(l->b, _k, &insert->k.p) > 0) - l->iter = node_iter; - } } /** |