bcachefs: Use memcpy_u64s_small() for copying keys
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 13 May 2023 21:21:55 +0000 (17:21 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:10:01 +0000 (17:10 -0400)
Small performance optimization; an open coded loop is better than rep ;
movsq for small copies.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/bkey.c
fs/bcachefs/bkey_sort.c
fs/bcachefs/bset.c

index abb444192749fc4a933c5a025be3445dbc37ec70..ee7ba700e75f4ee3afbac3ab241c7d6d9b1278c3 100644 (file)
@@ -360,7 +360,7 @@ bool bch2_bkey_pack(struct bkey_packed *out, const struct bkey_i *in,
        memmove_u64s((u64 *) out + format->key_u64s,
                     &in->v,
                     bkey_val_u64s(&in->k));
-       memcpy_u64s(out, &tmp, format->key_u64s);
+       memcpy_u64s_small(out, &tmp, format->key_u64s);
 
        return true;
 }
index cdef41db76925c235e218974e0dba760da61e55c..b9aa027c881b14458394ae8fdad6d93f53e1cbbf 100644 (file)
@@ -188,7 +188,7 @@ unsigned bch2_sort_keys(struct bkey_packed *dst,
                }
 
                if (bkey_deleted(in)) {
-                       memcpy_u64s(out, in, bkeyp_key_u64s(f, in));
+                       memcpy_u64s_small(out, in, bkeyp_key_u64s(f, in));
                        set_bkeyp_val_u64s(f, out, 0);
                } else {
                        bkey_copy(out, in);
index a4c06e856c2e67c0cb1202443712fba11d735a07..4d55011551e0187e83ceaabb845b0f4855abf20f 100644 (file)
@@ -1022,7 +1022,7 @@ void bch2_bset_insert(struct btree *b,
                set_btree_bset_end(b, t);
        }
 
-       memcpy_u64s(where, src,
+       memcpy_u64s_small(where, src,
                    bkeyp_key_u64s(f, src));
        memcpy_u64s(bkeyp_val(f, where), &insert->v,
                    bkeyp_val_u64s(f, src));