summaryrefslogtreecommitdiff
path: root/fs/bcachefs/bkey_methods.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/bkey_methods.c')
-rw-r--r--fs/bcachefs/bkey_methods.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/fs/bcachefs/bkey_methods.c b/fs/bcachefs/bkey_methods.c
index 79f3fbe925d5..bf22912b1237 100644
--- a/fs/bcachefs/bkey_methods.c
+++ b/fs/bcachefs/bkey_methods.c
@@ -427,9 +427,10 @@ void bch2_bkey_renumber(enum btree_node_type btree_node_type,
void __bch2_bkey_compat(unsigned level, enum btree_id btree_id,
unsigned version, unsigned big_endian,
int write,
- struct bkey_format *f,
+ struct btree *b,
struct bkey_packed *k)
{
+ struct bkey_format_processed *f = b ? &b->format : NULL;
const struct bkey_ops *ops;
struct bkey uk;
struct bkey_s u;
@@ -444,7 +445,7 @@ void __bch2_bkey_compat(unsigned level, enum btree_id btree_id,
switch (!write ? i : nr_compat - 1 - i) {
case 0:
if (big_endian != CPU_BIG_ENDIAN)
- bch2_bkey_swab_key(f, k);
+ bch2_bkey_swab_key(&f->f, k);
break;
case 1:
if (version < bcachefs_metadata_version_bkey_renumber)
@@ -457,14 +458,14 @@ void __bch2_bkey_compat(unsigned level, enum btree_id btree_id,
struct bkey_i *u = packed_to_bkey(k);
swap(u->k.p.inode, u->k.p.offset);
- } else if (f->bits_per_field[BKEY_FIELD_INODE] &&
- f->bits_per_field[BKEY_FIELD_OFFSET]) {
- struct bkey_format tmp = *f, *in = f, *out = &tmp;
+ } else if (f->f.bits_per_field[BKEY_FIELD_INODE] &&
+ f->f.bits_per_field[BKEY_FIELD_OFFSET]) {
+ struct bkey_format_processed tmp = *f, *in = f, *out = &tmp;
- swap(tmp.bits_per_field[BKEY_FIELD_INODE],
- tmp.bits_per_field[BKEY_FIELD_OFFSET]);
- swap(tmp.field_offset[BKEY_FIELD_INODE],
- tmp.field_offset[BKEY_FIELD_OFFSET]);
+ swap(tmp.f.bits_per_field[BKEY_FIELD_INODE],
+ tmp.f.bits_per_field[BKEY_FIELD_OFFSET]);
+ swap(tmp.f.field_offset[BKEY_FIELD_INODE],
+ tmp.f.field_offset[BKEY_FIELD_OFFSET]);
if (!write)
swap(in, out);
@@ -484,9 +485,9 @@ void __bch2_bkey_compat(unsigned level, enum btree_id btree_id,
u->k.p.snapshot = write
? 0 : U32_MAX;
} else {
- u64 min_packed = f->field_offset[BKEY_FIELD_SNAPSHOT];
+ u64 min_packed = f->f.field_offset[BKEY_FIELD_SNAPSHOT];
u64 max_packed = min_packed +
- ~(~0ULL << f->bits_per_field[BKEY_FIELD_SNAPSHOT]);
+ ~(~0ULL << f->f.bits_per_field[BKEY_FIELD_SNAPSHOT]);
uk = __bch2_bkey_unpack_key(f, k);
uk.p.snapshot = write