From: Kent Overstreet Date: Mon, 20 Dec 2021 00:01:41 +0000 (-0500) Subject: bcachefs: Don't call bch2_bkey_transform() unnecessarily X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=7a0e4afb1a1116a3580144c7c902e6024333f20e;p=linux.git bcachefs: Don't call bch2_bkey_transform() unnecessarily If the packed format isn't changing, there's no need to call bch2_bkey_transform(). Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/bkey_sort.c b/fs/bcachefs/bkey_sort.c index da0b7a63b146a..b1385a77da114 100644 --- a/fs/bcachefs/bkey_sort.c +++ b/fs/bcachefs/bkey_sort.c @@ -127,6 +127,7 @@ bch2_sort_repack(struct bset *dst, struct btree *src, struct bkey_format *in_f = &src->format; struct bkey_packed *in, *out = vstruct_last(dst); struct btree_nr_keys nr; + bool transform = memcmp(out_f, &src->format, sizeof(*out_f)); memset(&nr, 0, sizeof(nr)); @@ -134,8 +135,10 @@ bch2_sort_repack(struct bset *dst, struct btree *src, if (filter_whiteouts && bkey_deleted(in)) continue; - if (bch2_bkey_transform(out_f, out, bkey_packed(in) - ? in_f : &bch2_bkey_format_current, in)) + if (!transform) + bkey_copy(out, in); + else if (bch2_bkey_transform(out_f, out, bkey_packed(in) + ? in_f : &bch2_bkey_format_current, in)) out->format = KEY_FORMAT_LOCAL_BTREE; else bch2_bkey_unpack(src, (void *) out, in);