X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libbcachefs%2Fjournal_io.h;h=8801e98104bd8aaa9671b41f89ee4e904169388d;hb=8642d4ae10f167a2eb850403f6d2b60757242b31;hp=a4931ab93a68dc0a18415a141aee4094d4d87e3e;hpb=7740db24f7b169dc09938ad67d2c15771fa070da;p=bcachefs-tools-debian diff --git a/libbcachefs/journal_io.h b/libbcachefs/journal_io.h index a4931ab..8801e98 100644 --- a/libbcachefs/journal_io.h +++ b/libbcachefs/journal_io.h @@ -7,12 +7,16 @@ * during cache_registration */ struct journal_replay { - struct list_head list; - struct bch_extent_ptr ptrs[BCH_REPLICAS_MAX]; + struct journal_ptr { + bool csum_good; + u8 dev; + u32 bucket; + u32 bucket_offset; + u64 sector; + } ptrs[BCH_REPLICAS_MAX]; unsigned nr_ptrs; - /* checksum error, but we may want to try using it anyways: */ - bool bad; + bool csum_good; bool ignore; /* must be last: */ struct jset j; @@ -36,11 +40,24 @@ static inline struct jset_entry *__jset_entry_type_next(struct jset *jset, (entry = __jset_entry_type_next(jset, entry, type)); \ entry = vstruct_next(entry)) -#define for_each_jset_key(k, _n, entry, jset) \ - for_each_jset_entry_type(entry, jset, BCH_JSET_ENTRY_btree_keys) \ - vstruct_for_each_safe(entry, k, _n) +#define jset_entry_for_each_key(_e, _k) \ + for (_k = (_e)->start; \ + _k < vstruct_last(_e); \ + _k = bkey_next(_k)) -int bch2_journal_read(struct bch_fs *, struct list_head *, u64 *, u64 *); +#define for_each_jset_key(k, entry, jset) \ + for_each_jset_entry_type(entry, jset, BCH_JSET_ENTRY_btree_keys)\ + jset_entry_for_each_key(entry, k) + +int bch2_journal_entry_validate(struct bch_fs *, struct jset *, + struct jset_entry *, unsigned, int, int); +void bch2_journal_entry_to_text(struct printbuf *, struct bch_fs *, + struct jset_entry *); + +void bch2_journal_ptrs_to_text(struct printbuf *, struct bch_fs *, + struct journal_replay *); + +int bch2_journal_read(struct bch_fs *, u64 *, u64 *, u64 *); void bch2_journal_write(struct closure *);