1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _BCACHEFS_BBPOS_H 3 #define _BCACHEFS_BBPOS_H 4 5 #include "bbpos_types.h" 6 #include "bkey_methods.h" 7 #include "btree_cache.h" 8 9 static inline int bbpos_cmp(struct bbpos l, struct bbpos r) 10 { 11 return cmp_int(l.btree, r.btree) ?: bpos_cmp(l.pos, r.pos); 12 } 13 14 static inline struct bbpos bbpos_successor(struct bbpos pos) 15 { 16 if (bpos_cmp(pos.pos, SPOS_MAX)) { 17 pos.pos = bpos_successor(pos.pos); 18 return pos; 19 } 20 21 if (pos.btree != BTREE_ID_NR) { 22 pos.btree++; 23 pos.pos = POS_MIN; 24 return pos; 25 } 26 27 BUG(); 28 } 29 30 static inline void bch2_bbpos_to_text(struct printbuf *out, struct bbpos pos) 31 { 32 prt_str(out, bch2_btree_id_str(pos.btree)); 33 prt_char(out, ':'); 34 bch2_bpos_to_text(out, pos.pos); 35 } 36 37 #endif /* _BCACHEFS_BBPOS_H */ 38