]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/journal_io.h
Move c_src dirs back to toplevel
[bcachefs-tools-debian] / libbcachefs / journal_io.h
index f2001835e43e215f725331f1cc591f736a29b6ef..c035e7c108e19012e6e4e1f708136dec27b5387c 100644 (file)
@@ -7,8 +7,8 @@
  * during cache_registration
  */
 struct journal_replay {
-       struct list_head        list;
        struct journal_ptr {
+               bool            csum_good;
                u8              dev;
                u32             bucket;
                u32             bucket_offset;
@@ -16,8 +16,7 @@ struct journal_replay {
        }                       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;
@@ -41,20 +40,26 @@ 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_entry_validate(struct bch_fs *, const char *,
-                               struct jset_entry *, unsigned, int, int);
+#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,
+                               enum bkey_invalid_flags);
 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 *, struct list_head *, u64 *, u64 *);
+int bch2_journal_read(struct bch_fs *, u64 *, u64 *, u64 *);
 
-void bch2_journal_write(struct closure *);
+CLOSURE_CALLBACK(bch2_journal_write);
 
 #endif /* _BCACHEFS_JOURNAL_IO_H */