diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-11-12 20:53:57 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-11-12 20:57:28 -0500 |
commit | 7fd6c3ffe45b3b42c0bc8a8c5d1387a5e3316a54 (patch) | |
tree | d596299da8c34dff74cb13caf9dd47d9154c25b4 /libbcachefs/bkey_methods.c | |
parent | a613340b26ad88801666362d2824118396f34c38 (diff) |
Update bcachefs sources to 3ca08ab51ec9 bcachefs: six locks: Simplify optimistic spinning
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'libbcachefs/bkey_methods.c')
-rw-r--r-- | libbcachefs/bkey_methods.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/libbcachefs/bkey_methods.c b/libbcachefs/bkey_methods.c index 2f518d7e..761f5e33 100644 --- a/libbcachefs/bkey_methods.c +++ b/libbcachefs/bkey_methods.c @@ -186,15 +186,20 @@ int __bch2_bkey_invalid(struct bch_fs *c, struct bkey_s_c k, if (type != BKEY_TYPE_btree) { enum btree_id btree = type - 1; - bkey_fsck_err_on(!btree_type_has_snapshots(btree) && - k.k->p.snapshot, c, err, - bkey_snapshot_nonzero, - "nonzero snapshot"); - - bkey_fsck_err_on(btree_type_has_snapshots(btree) && - !k.k->p.snapshot, c, err, - bkey_snapshot_zero, - "snapshot == 0"); + if (btree_type_has_snapshots(btree)) { + bkey_fsck_err_on(!k.k->p.snapshot, c, err, + bkey_snapshot_zero, + "snapshot == 0"); + } else if (!btree_type_has_snapshot_field(btree)) { + bkey_fsck_err_on(k.k->p.snapshot, c, err, + bkey_snapshot_nonzero, + "nonzero snapshot"); + } else { + /* + * btree uses snapshot field but it's not required to be + * nonzero + */ + } bkey_fsck_err_on(bkey_eq(k.k->p, POS_MAX), c, err, bkey_at_pos_max, |