bcachefs: Replace bch2_btree_iter_next() calls with bch2_btree_iter_advance
authorKent Overstreet <kent.overstreet@gmail.com>
Sun, 21 Mar 2021 20:55:25 +0000 (16:55 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:56 +0000 (17:08 -0400)
The way btree iterators work internally has been changing, particularly
with the iter->real_pos changes, and bch2_btree_iter_next() is no longer
hyper optimized - it's just advance followed by peek, so it's more
efficient to just call advance where we're not using the return value of
bch2_btree_iter_next().

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_gc.c
fs/bcachefs/btree_iter.c
fs/bcachefs/btree_iter.h
fs/bcachefs/debug.c
fs/bcachefs/ec.c
fs/bcachefs/fs.c
fs/bcachefs/fsck.c
fs/bcachefs/migrate.c
fs/bcachefs/move.c

index f75562bf8e2148fe277191374c9670dcb4098ef5..483360fbda1837fb72c6c4456b01d7c44335cca9 100644 (file)
@@ -1208,7 +1208,7 @@ static int bch2_gc_btree_gens(struct bch_fs *c, enum btree_id btree_id)
                        }
                }
 
-               bch2_btree_iter_next(iter);
+               bch2_btree_iter_advance(iter);
        }
        bch2_trans_iter_put(&trans, iter);
 
index 073157f5fbed1a8eac4102a2ba2714b698de5872..d6ef08b27858c268997216f5432ca918df8291c8 100644 (file)
@@ -1501,7 +1501,7 @@ void bch2_btree_iter_set_pos(struct btree_iter *iter, struct bpos new_pos)
        btree_iter_set_search_pos(iter, btree_iter_search_key(iter));
 }
 
-inline bool bch2_btree_iter_advance_pos(struct btree_iter *iter)
+inline bool bch2_btree_iter_advance(struct btree_iter *iter)
 {
        struct bpos pos = iter->k.p;
        bool ret = bkey_cmp(pos, POS_MAX) != 0;
@@ -1512,7 +1512,7 @@ inline bool bch2_btree_iter_advance_pos(struct btree_iter *iter)
        return ret;
 }
 
-inline bool bch2_btree_iter_rewind_pos(struct btree_iter *iter)
+inline bool bch2_btree_iter_rewind(struct btree_iter *iter)
 {
        struct bpos pos = bkey_start_pos(&iter->k);
        bool ret = bkey_cmp(pos, POS_MIN) != 0;
@@ -1637,7 +1637,7 @@ struct bkey_s_c bch2_btree_iter_peek(struct btree_iter *iter)
  */
 struct bkey_s_c bch2_btree_iter_next(struct btree_iter *iter)
 {
-       if (!bch2_btree_iter_advance_pos(iter))
+       if (!bch2_btree_iter_advance(iter))
                return bkey_s_c_null;
 
        return bch2_btree_iter_peek(iter);
@@ -1691,7 +1691,7 @@ struct bkey_s_c bch2_btree_iter_peek_with_updates(struct btree_iter *iter)
                k = __bch2_btree_iter_peek_with_updates(iter);
 
                if (k.k && bkey_deleted(k.k)) {
-                       if (!bch2_btree_iter_advance_pos(iter))
+                       if (!bch2_btree_iter_advance(iter))
                                return bkey_s_c_null;
                        continue;
                }
@@ -1716,7 +1716,7 @@ struct bkey_s_c bch2_btree_iter_peek_with_updates(struct btree_iter *iter)
 
 struct bkey_s_c bch2_btree_iter_next_with_updates(struct btree_iter *iter)
 {
-       if (!bch2_btree_iter_advance_pos(iter))
+       if (!bch2_btree_iter_advance(iter))
                return bkey_s_c_null;
 
        return bch2_btree_iter_peek_with_updates(iter);
@@ -1793,7 +1793,7 @@ no_key:
  */
 struct bkey_s_c bch2_btree_iter_prev(struct btree_iter *iter)
 {
-       if (!bch2_btree_iter_rewind_pos(iter))
+       if (!bch2_btree_iter_rewind(iter))
                return bkey_s_c_null;
 
        return bch2_btree_iter_peek_prev(iter);
@@ -1885,7 +1885,7 @@ struct bkey_s_c bch2_btree_iter_peek_slot(struct btree_iter *iter)
 
 struct bkey_s_c bch2_btree_iter_next_slot(struct btree_iter *iter)
 {
-       if (!bch2_btree_iter_advance_pos(iter))
+       if (!bch2_btree_iter_advance(iter))
                return bkey_s_c_null;
 
        return bch2_btree_iter_peek_slot(iter);
@@ -1893,7 +1893,7 @@ struct bkey_s_c bch2_btree_iter_next_slot(struct btree_iter *iter)
 
 struct bkey_s_c bch2_btree_iter_prev_slot(struct btree_iter *iter)
 {
-       if (!bch2_btree_iter_rewind_pos(iter))
+       if (!bch2_btree_iter_rewind(iter))
                return bkey_s_c_null;
 
        return bch2_btree_iter_peek_slot(iter);
index c839bfe6ffa48d77a0652f80bb5cd6b0e1f5ce66..1276d8aaf65203ef7609e4be22569315c9646343 100644 (file)
@@ -175,8 +175,8 @@ struct bkey_s_c bch2_btree_iter_prev_slot(struct btree_iter *);
 
 struct bkey_s_c bch2_btree_iter_peek_cached(struct btree_iter *);
 
-bool bch2_btree_iter_advance_pos(struct btree_iter *);
-bool bch2_btree_iter_rewind_pos(struct btree_iter *);
+bool bch2_btree_iter_advance(struct btree_iter *);
+bool bch2_btree_iter_rewind(struct btree_iter *);
 void bch2_btree_iter_set_pos(struct btree_iter *, struct bpos);
 
 /* Sort order for locking btree iterators: */
index 2c2d58514c6897aa103e7d6ac6aab1edb253b226..8b837ac69d7453df470172fb3c75cd25791c7e5e 100644 (file)
@@ -356,7 +356,7 @@ static ssize_t bch2_read_bfloat_failed(struct file *file, char __user *buf,
                if (err)
                        break;
 
-               bch2_btree_iter_next(iter);
+               bch2_btree_iter_advance(iter);
                i->from = iter->pos;
 
                err = flush_buf(i);
index bdce37981c5c52ab2d65e5c64cc62c85b4020053..370f9e6916f3be1cbd71f853a268afc0beb3cc99 100644 (file)
@@ -842,13 +842,13 @@ static int ec_stripe_update_ptrs(struct bch_fs *c,
                struct bch_extent_ptr *ptr, *ec_ptr = NULL;
 
                if (extent_has_stripe_ptr(k, s->key.k.p.offset)) {
-                       bch2_btree_iter_next(iter);
+                       bch2_btree_iter_advance(iter);
                        continue;
                }
 
                block = bkey_matches_stripe(&s->key.v, k);
                if (block < 0) {
-                       bch2_btree_iter_next(iter);
+                       bch2_btree_iter_advance(iter);
                        continue;
                }
 
index 3acda0389da8ba58a8d043741435dda384f8abdd..77db405e3418ea0b9a629ed614dafb75cb92a587 100644 (file)
@@ -914,7 +914,7 @@ retry:
 
                if (!bkey_extent_is_data(k.k) &&
                    k.k->type != KEY_TYPE_reservation) {
-                       bch2_btree_iter_next(iter);
+                       bch2_btree_iter_advance(iter);
                        continue;
                }
 
index f8e0b24d087a1cdb1d64db81586ed3813760b08c..ffb30ef7ef006d2c951bd69719d85d32eca5c115 100644 (file)
@@ -547,7 +547,7 @@ retry:
                        i_sectors += k.k->size;
                bch2_bkey_buf_reassemble(&prev, c, k);
 
-               bch2_btree_iter_advance_pos(iter);
+               bch2_btree_iter_advance(iter);
        }
 fsck_err:
        if (ret == -EINTR)
@@ -703,7 +703,7 @@ retry:
 
                }
 
-               bch2_btree_iter_advance_pos(iter);
+               bch2_btree_iter_advance(iter);
        }
 
        hash_stop_chain(&trans, &h);
@@ -762,7 +762,7 @@ retry:
                if (ret)
                        break;
 
-               bch2_btree_iter_advance_pos(iter);
+               bch2_btree_iter_advance(iter);
        }
 fsck_err:
        if (ret == -EINTR)
@@ -1389,7 +1389,7 @@ peek_nlinks:      link = genradix_iter_peek(&nlinks_iter, links);
                if (nlinks_pos == iter->pos.offset)
                        genradix_iter_advance(&nlinks_iter, links);
 
-               bch2_btree_iter_advance_pos(iter);
+               bch2_btree_iter_advance(iter);
                bch2_trans_cond_resched(&trans);
        }
 fsck_err:
index 4d8b4169923df0b9e78eed3307dd8fe89f754b09..ef69a19f494a1583d609a04632da248f599515e4 100644 (file)
@@ -53,7 +53,7 @@ static int __bch2_dev_usrdata_drop(struct bch_fs *c, unsigned dev_idx, int flags
        while ((k = bch2_btree_iter_peek(iter)).k &&
               !(ret = bkey_err(k))) {
                if (!bch2_bkey_has_device(k, dev_idx)) {
-                       bch2_btree_iter_next(iter);
+                       bch2_btree_iter_advance(iter);
                        continue;
                }
 
index f7b0764d9c9891fd76ccc4071f2a739a58804ef8..87307670fd4adb93477c60314b9ed340d04a1e24 100644 (file)
@@ -638,7 +638,7 @@ next:
                atomic64_add(k.k->size * bch2_bkey_nr_ptrs_allocated(k),
                             &stats->sectors_seen);
 next_nondata:
-               bch2_btree_iter_next(iter);
+               bch2_btree_iter_advance(iter);
                bch2_trans_cond_resched(&trans);
        }
 out: