From 137b0ed907f1c0a5036288fa340685f55fb37754 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Fri, 4 Oct 2019 17:07:20 -0400 Subject: [PATCH] bcachefs: bch2_extent_atomic_end() now traverses iter This fixes a bug in io.c bch2_write_index_default() - it was missing the traverse call, but bch2_extent_atomic_end returns an error now and can just call it itself. Signed-off-by: Kent Overstreet --- fs/bcachefs/extents.c | 12 +++++++++--- fs/bcachefs/fs-io.c | 8 -------- fs/bcachefs/recovery.c | 6 +----- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c index db32d9eaa3dc1..41a2b36f1d2f7 100644 --- a/fs/bcachefs/extents.c +++ b/fs/bcachefs/extents.c @@ -1010,13 +1010,19 @@ int bch2_extent_atomic_end(struct btree_iter *iter, struct bpos *end) { struct btree_trans *trans = iter->trans; - struct btree *b = iter->l[0].b; - struct btree_node_iter node_iter = iter->l[0].iter; + struct btree *b; + struct btree_node_iter node_iter; struct bkey_packed *_k; unsigned nr_iters = 0; int ret; - BUG_ON(iter->uptodate > BTREE_ITER_NEED_PEEK); + ret = bch2_btree_iter_traverse(iter); + if (ret) + return ret; + + b = iter->l[0].b; + node_iter = iter->l[0].iter; + BUG_ON(bkey_cmp(bkey_start_pos(&insert->k), b->data->min_key) < 0); *end = bpos_min(insert->k.p, b->key.k.p); diff --git a/fs/bcachefs/fs-io.c b/fs/bcachefs/fs-io.c index 49c0343da4625..90587a556cee6 100644 --- a/fs/bcachefs/fs-io.c +++ b/fs/bcachefs/fs-io.c @@ -297,10 +297,6 @@ int bch2_extent_update(struct btree_trans *trans, s64 i_sectors_delta; int ret; - ret = bch2_btree_iter_traverse(extent_iter); - if (ret) - return ret; - ret = bch2_extent_trim_atomic(k, extent_iter); if (ret) return ret; @@ -2695,10 +2691,6 @@ reassemble: copy.k.k.p.offset += shift >> 9; bch2_btree_iter_set_pos(dst, bkey_start_pos(©.k.k)); - ret = bch2_btree_iter_traverse(dst); - if (ret) - goto bkey_err; - ret = bch2_extent_atomic_end(dst, ©.k, &atomic_end); if (ret) goto bkey_err; diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c index e6015bc13e9b6..97c0d7d1fe772 100644 --- a/fs/bcachefs/recovery.c +++ b/fs/bcachefs/recovery.c @@ -268,7 +268,7 @@ retry: BTREE_ITER_INTENT); do { - ret = bch2_btree_iter_traverse(iter); + ret = bch2_extent_atomic_end(iter, k, &atomic_end); if (ret) goto err; @@ -282,10 +282,6 @@ retry: if (ret) goto err; - ret = bch2_extent_atomic_end(split_iter, k, &atomic_end); - if (ret) - goto err; - if (!remark && remark_if_split && bkey_cmp(atomic_end, k->k.p) < 0) { -- 2.30.2