diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-07-17 00:56:07 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:10:08 -0400 |
commit | 8e992c6c1f3869d0b33c754d4b6730603d3586c4 (patch) | |
tree | 41f0e165a277f49ea6798c40d770d21bb1b64546 /fs/bcachefs/lru.h | |
parent | 4dc5bb9adf3035246e77d5e9cf7931b8af0fcaac (diff) |
bcachefs: bch2_btree_bit_mod()
New helper for bitset btrees.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/lru.h')
-rw-r--r-- | fs/bcachefs/lru.h | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/fs/bcachefs/lru.h b/fs/bcachefs/lru.h index 7a3be20a8523..be66bf9ad809 100644 --- a/fs/bcachefs/lru.h +++ b/fs/bcachefs/lru.h @@ -5,13 +5,6 @@ #define LRU_TIME_BITS 48 #define LRU_TIME_MAX ((1ULL << LRU_TIME_BITS) - 1) -static inline struct bpos lru_pos(u16 lru_id, u64 dev_bucket, u64 time) -{ - EBUG_ON(time > LRU_TIME_MAX); - - return POS(((u64) lru_id << LRU_TIME_BITS)|time, dev_bucket); -} - static inline u64 lru_pos_id(struct bpos pos) { return pos.inode >> LRU_TIME_BITS; @@ -22,6 +15,18 @@ static inline u64 lru_pos_time(struct bpos pos) return pos.inode & ~(~0ULL << LRU_TIME_BITS); } +static inline struct bpos lru_pos(u16 lru_id, u64 dev_bucket, u64 time) +{ + struct bpos pos = POS(((u64) lru_id << LRU_TIME_BITS)|time, dev_bucket); + + EBUG_ON(time > LRU_TIME_MAX); + EBUG_ON(lru_pos_id(pos) != lru_id); + EBUG_ON(lru_pos_time(pos) != time); + EBUG_ON(pos.offset != dev_bucket); + + return pos; +} + #define BCH_LRU_TYPES() \ x(read) \ x(fragmentation) |