diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-11-09 23:50:52 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:08:32 -0400 |
commit | ad44bdc351faeacb9b7294f1689ac76babf379ad (patch) | |
tree | 934bff1cc441503b9ee92e7702c14c45f08388a8 /fs/bcachefs/bset.h | |
parent | aef90ce085123c3d0c3f110b4c50b77d007b2d5d (diff) | |
download | lwn-ad44bdc351faeacb9b7294f1689ac76babf379ad.tar.gz lwn-ad44bdc351faeacb9b7294f1689ac76babf379ad.zip |
bcachefs: bkey noops
For upcoming inline data extents, we're going to need to be able to
shorten the value of existing bkeys in the btree - and to make that work
we're going to be able to need to pad out the space the value previously
took up with something.
This patch changes the various code that iterates over bkeys to handle
k->u64s == 0 as meaning "skip the next 8 bytes".
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/bset.h')
-rw-r--r-- | fs/bcachefs/bset.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/bcachefs/bset.h b/fs/bcachefs/bset.h index 3f5b7378a0a9..0e9bd8022d35 100644 --- a/fs/bcachefs/bset.h +++ b/fs/bcachefs/bset.h @@ -284,9 +284,14 @@ static inline struct bkey_s __bkey_disassemble(struct btree *b, return (struct bkey_s) { .k = u, .v = bkeyp_val(&b->format, k), }; } -#define for_each_bset(_b, _t) \ +#define for_each_bset(_b, _t) \ for (_t = (_b)->set; _t < (_b)->set + (_b)->nsets; _t++) +#define bset_tree_for_each_key(_b, _t, _k) \ + for (_k = btree_bkey_first(_b, _t); \ + _k != btree_bkey_last(_b, _t); \ + _k = bkey_next_skip_noops(_k, btree_bkey_last(_b, _t))) + static inline bool bset_has_ro_aux_tree(struct bset_tree *t) { return bset_aux_tree_type(t) == BSET_RO_AUX_TREE; |