]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: bch2_extent_atomic_end() now traverses iter
authorKent Overstreet <kent.overstreet@gmail.com>
Fri, 4 Oct 2019 21:07:20 +0000 (17:07 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:28 +0000 (17:08 -0400)
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 <kent.overstreet@linux.dev>
fs/bcachefs/extents.c
fs/bcachefs/fs-io.c
fs/bcachefs/recovery.c

index db32d9eaa3dc1598611be9cefbda34ac546558c7..41a2b36f1d2f7ff773889d4d6a22df456d3dd68c 100644 (file)
@@ -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);
index 49c0343da4625ba549fafd388472fefff4131a53..90587a556cee668467a24daa04814680e7114f85 100644 (file)
@@ -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(&copy.k.k));
 
-               ret = bch2_btree_iter_traverse(dst);
-               if (ret)
-                       goto bkey_err;
-
                ret = bch2_extent_atomic_end(dst, &copy.k, &atomic_end);
                if (ret)
                        goto bkey_err;
index e6015bc13e9b6329abe73db4f7d8fed0b45ef785..97c0d7d1fe772576162cfc1129f50e2748c4f5c1 100644 (file)
@@ -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) {