mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
bcachefs: Make __bch2_bkey_cmp_packed() smaller
We can probably get rid of the version that dispatches based on type checking too. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
6baf2730cc
commit
fab4f8c653
1 changed files with 10 additions and 16 deletions
|
@ -1061,26 +1061,20 @@ int __bch2_bkey_cmp_packed(const struct bkey_packed *l,
|
|||
const struct bkey_packed *r,
|
||||
const struct btree *b)
|
||||
{
|
||||
int packed = bkey_lr_packed(l, r);
|
||||
struct bkey unpacked;
|
||||
|
||||
if (likely(packed == BKEY_PACKED_BOTH))
|
||||
if (likely(bkey_packed(l) && bkey_packed(r)))
|
||||
return __bch2_bkey_cmp_packed_format_checked(l, r, b);
|
||||
|
||||
switch (packed) {
|
||||
case BKEY_PACKED_NONE:
|
||||
return bkey_cmp(((struct bkey *) l)->p,
|
||||
((struct bkey *) r)->p);
|
||||
case BKEY_PACKED_LEFT:
|
||||
return __bch2_bkey_cmp_left_packed_format_checked(b,
|
||||
(struct bkey_packed *) l,
|
||||
&((struct bkey *) r)->p);
|
||||
case BKEY_PACKED_RIGHT:
|
||||
return -__bch2_bkey_cmp_left_packed_format_checked(b,
|
||||
(struct bkey_packed *) r,
|
||||
&((struct bkey *) l)->p);
|
||||
default:
|
||||
unreachable();
|
||||
if (bkey_packed(l)) {
|
||||
__bkey_unpack_key_format_checked(b, &unpacked, l);
|
||||
l = (void*) &unpacked;
|
||||
} else if (bkey_packed(r)) {
|
||||
__bkey_unpack_key_format_checked(b, &unpacked, r);
|
||||
r = (void*) &unpacked;
|
||||
}
|
||||
|
||||
return bkey_cmp(((struct bkey *) l)->p, ((struct bkey *) r)->p);
|
||||
}
|
||||
|
||||
__pure __flatten
|
||||
|
|
Loading…
Reference in a new issue