bcachefs: bkey_on_stack_reassemble()
authorKent Overstreet <kent.overstreet@gmail.com>
Wed, 20 Nov 2019 19:51:30 +0000 (14:51 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:32 +0000 (17:08 -0400)
Small helper function.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/bkey_on_stack.h
fs/bcachefs/bkey_sort.c
fs/bcachefs/ec.c
fs/bcachefs/extent_update.c
fs/bcachefs/fs-io.c
fs/bcachefs/io.c
fs/bcachefs/migrate.c
fs/bcachefs/move.c
fs/bcachefs/reflink.c

index d4739038323f746d0a1e233d03a1cbf8d6320fef..f607a0cb37ed74b8ae39b0804a43fcdbee7bb040 100644 (file)
@@ -19,6 +19,14 @@ static inline void bkey_on_stack_realloc(struct bkey_on_stack *s,
        }
 }
 
+static inline void bkey_on_stack_reassemble(struct bkey_on_stack *s,
+                                           struct bch_fs *c,
+                                           struct bkey_s_c k)
+{
+       bkey_on_stack_realloc(s, c, k.k->u64s);
+       bkey_reassemble(s->k, k);
+}
+
 static inline void bkey_on_stack_init(struct bkey_on_stack *s)
 {
        s->k = (void *) s->onstack;
index daef8e5c599f25a7b864f9710d15c2e6928f5c07..2e205db5433d7bfd95ef9d7c81d4668bbbb00e2b 100644 (file)
@@ -356,12 +356,11 @@ struct btree_nr_keys bch2_extent_sort_fix_overlapping(struct bch_fs *c,
 
                        extent_sort_sift(iter, b, _r - iter->data);
                } else if (bkey_cmp(l.k->p, r.k->p) > 0) {
-                       bkey_on_stack_realloc(&split, c, l.k->u64s);
 
                        /*
                         * r wins, but it overlaps in the middle of l - split l:
                         */
-                       bkey_reassemble(split.k, l.s_c);
+                       bkey_on_stack_reassemble(&split, c, l.s_c);
                        bch2_cut_back(bkey_start_pos(r.k), split.k);
 
                        bch2_cut_front_s(r.k->p, l);
index 654823a6da74716098f93a48e4b30d58d64fa450..3b3b931dc6c9742ae7241cf02d99470ad4231930 100644 (file)
@@ -807,8 +807,7 @@ static int ec_stripe_update_ptrs(struct bch_fs *c,
 
                dev = s->key.v.ptrs[idx].dev;
 
-               bkey_on_stack_realloc(&sk, c, k.k->u64s);
-               bkey_reassemble(sk.k, k);
+               bkey_on_stack_reassemble(&sk, c, k);
                e = bkey_i_to_s_extent(sk.k);
 
                extent_for_each_ptr(e, ptr) {
index 91ceb5d53f927dc7da7fad1555a08d2ecc9a3735..742b4d78cb3a7d050c0ace08c67c4ba1fc6e1c64 100644 (file)
@@ -347,7 +347,7 @@ extent_squash(struct bch_fs *c, struct btree_iter *iter,
                struct bkey_on_stack split;
 
                bkey_on_stack_init(&split);
-               bkey_on_stack_realloc(&split, c, k.k->u64s);
+               bkey_on_stack_reassemble(&split, c, k.s_c);
 
                /*
                 * The insert key falls 'in the middle' of k
@@ -363,7 +363,6 @@ extent_squash(struct bch_fs *c, struct btree_iter *iter,
                 * modify k _before_ doing the insert (which will move
                 * what k points to)
                 */
-               bkey_reassemble(split.k, k.s_c);
                split.k->k.needs_whiteout |= bkey_written(l->b, _k);
 
                bch2_cut_back(bkey_start_pos(&insert->k), split.k);
index e61f5e2fb6952f4a3630eb3467c4475d32db00ec..5beb47805a68be03eb9f7cc598ad73bea399ec38 100644 (file)
@@ -780,8 +780,7 @@ retry:
                if (ret)
                        break;
 
-               bkey_on_stack_realloc(&sk, c, k.k->u64s);
-               bkey_reassemble(sk.k, k);
+               bkey_on_stack_reassemble(&sk, c, k);
                k = bkey_i_to_s_c(sk.k);
 
                offset_into_extent = iter->pos.offset -
@@ -2476,8 +2475,7 @@ static long bchfs_fcollapse_finsert(struct bch_inode_info *inode,
                    bkey_cmp(k.k->p, POS(inode->v.i_ino, offset >> 9)) <= 0)
                        break;
 reassemble:
-               bkey_on_stack_realloc(&copy, c, k.k->u64s);
-               bkey_reassemble(copy.k, k);
+               bkey_on_stack_reassemble(&copy, c, k);
 
                if (insert &&
                    bkey_cmp(bkey_start_pos(k.k), move_pos) < 0) {
index 6ceb8951c22158a44832007147316ced88ae0b86..5de554a883ef6d346ead2149fa5bda15775253f0 100644 (file)
@@ -1538,8 +1538,7 @@ retry:
        if (bkey_err(k))
                goto err;
 
-       bkey_on_stack_realloc(&sk, c, k.k->u64s);
-       bkey_reassemble(sk.k, k);
+       bkey_on_stack_reassemble(&sk, c, k);
        k = bkey_i_to_s_c(sk.k);
        bch2_trans_unlock(&trans);
 
@@ -1590,8 +1589,7 @@ retry:
                           BTREE_ITER_SLOTS, k, ret) {
                unsigned bytes, sectors, offset_into_extent;
 
-               bkey_on_stack_realloc(&sk, c, k.k->u64s);
-               bkey_reassemble(sk.k, k);
+               bkey_on_stack_reassemble(&sk, c, k);
                k = bkey_i_to_s_c(sk.k);
 
                offset_into_extent = iter->pos.offset -
@@ -1714,8 +1712,7 @@ retry:
        if (IS_ERR_OR_NULL(k.k))
                goto out;
 
-       bkey_on_stack_realloc(&new, c, k.k->u64s);
-       bkey_reassemble(new.k, k);
+       bkey_on_stack_reassemble(&new, c, k);
        k = bkey_i_to_s_c(new.k);
 
        if (bversion_cmp(k.k->version, rbio->version) ||
@@ -2229,8 +2226,7 @@ retry:
                        bkey_start_offset(k.k);
                sectors = k.k->size - offset_into_extent;
 
-               bkey_on_stack_realloc(&sk, c, k.k->u64s);
-               bkey_reassemble(sk.k, k);
+               bkey_on_stack_reassemble(&sk, c, k);
                k = bkey_i_to_s_c(sk.k);
 
                ret = bch2_read_indirect_extent(&trans,
index 4dacbd637d021b5121877f23311989d7b9d19b0c..4b59dcd04cce3dd0140c7f87f0acbe3a6cfa30c8 100644 (file)
@@ -60,8 +60,7 @@ static int __bch2_dev_usrdata_drop(struct bch_fs *c, unsigned dev_idx, int flags
                        continue;
                }
 
-               bkey_on_stack_realloc(&sk, c, k.k->u64s);
-               bkey_reassemble(sk.k, k);
+               bkey_on_stack_reassemble(&sk, c, k);
 
                ret = drop_dev_ptrs(c, bkey_i_to_s(sk.k),
                                    dev_idx, flags, false);
index 17f0a89a7637055e4ab41b36286a36a8c6812e80..0aebae33d299d2971ac54d5c10d763b2afd41a60 100644 (file)
@@ -578,8 +578,7 @@ peek:
                }
 
                /* unlock before doing IO: */
-               bkey_on_stack_realloc(&sk, c, k.k->u64s);
-               bkey_reassemble(sk.k, k);
+               bkey_on_stack_reassemble(&sk, c, k);
                k = bkey_i_to_s_c(sk.k);
                bch2_trans_unlock(&trans);
 
index 4de65bf70362e8d0354538bdea61c8bd80475249..2812fa305c0edea7457a8698fd3965771b74d89d 100644 (file)
@@ -225,8 +225,7 @@ s64 bch2_remap_range(struct bch_fs *c,
                        break;
 
                if (src_k.k->type == KEY_TYPE_extent) {
-                       bkey_on_stack_realloc(&new_src, c, src_k.k->u64s);
-                       bkey_reassemble(new_src.k, src_k);
+                       bkey_on_stack_reassemble(&new_src, c, src_k);
                        src_k = bkey_i_to_s_c(new_src.k);
 
                        bch2_cut_front(src_iter->pos,   new_src.k);