]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bcachefs: improve move_gap()
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 24 Feb 2024 03:43:24 +0000 (22:43 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 14 Mar 2024 01:22:25 +0000 (21:22 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_journal_iter.c
fs/bcachefs/recovery.c
fs/bcachefs/util.h

index 9291a897abab00fea301b03f70de96eef498bbe3..207dd32e2ecc9e9c7e43002d8da2616d24957a3c 100644 (file)
@@ -218,8 +218,7 @@ int bch2_journal_key_insert_take(struct bch_fs *c, enum btree_id id,
 
        journal_iters_move_gap(c, keys->gap, idx);
 
-       move_gap(keys->data, keys->nr, keys->size, keys->gap, idx);
-       keys->gap = idx;
+       move_gap(keys, idx);
 
        keys->nr++;
        keys->data[keys->gap++] = n;
@@ -473,8 +472,7 @@ void bch2_journal_keys_put(struct bch_fs *c)
        if (!atomic_dec_and_test(&keys->ref))
                return;
 
-       move_gap(keys->data, keys->nr, keys->size, keys->gap, keys->nr);
-       keys->gap = keys->nr;
+       move_gap(keys, keys->nr);
 
        darray_for_each(*keys, i)
                if (i->allocated)
index d773af23a189b8ab2a80e834bcee54d3c26161e5..f11e882de02bf2d9f8467f067cf499c3ad326c03 100644 (file)
@@ -531,8 +531,7 @@ static int bch2_set_may_go_rw(struct bch_fs *c)
         * setting journal_key->overwritten: it will be accessed by multiple
         * threads
         */
-       move_gap(keys->data, keys->nr, keys->size, keys->gap, keys->nr);
-       keys->gap = keys->nr;
+       move_gap(keys, keys->nr);
 
        set_bit(BCH_FS_may_go_rw, &c->flags);
 
index 7fed75c44cd59b8c51dda22cfa9db71d07fcf633..b3d3a7349814cbb0d6c40924eca09918ef27ad15 100644 (file)
@@ -756,8 +756,12 @@ static inline void __move_gap(void *array, size_t element_size,
 }
 
 /* Move the gap in a gap buffer: */
-#define move_gap(_array, _nr, _size, _old_gap, _new_gap)       \
-       __move_gap(_array, sizeof(_array[0]), _nr, _size, _old_gap, _new_gap)
+#define move_gap(_d, _new_gap)                                         \
+do {                                                                   \
+       __move_gap((_d)->data, sizeof((_d)->data[0]),                   \
+                  (_d)->nr, (_d)->size, (_d)->gap, _new_gap);          \
+       (_d)->gap = _new_gap;                                           \
+} while (0)
 
 #define bubble_sort(_base, _nr, _cmp)                                  \
 do {                                                                   \