summaryrefslogtreecommitdiff
path: root/libbcachefs/journal_io.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2018-05-04 14:04:31 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2018-05-04 14:05:32 -0400
commit018de5aa899937a9dc3bc8cb9819cb218a59abf3 (patch)
tree554b99e5dafe04f5bf9201a3c54bd1b0f39f77f3 /libbcachefs/journal_io.h
parentc598d91dcb0c7e95abdacb2711898ae14ab52ca1 (diff)
Update bcachefs sources to ed4aea2ad4 bcachefs: fix gcc warning
Diffstat (limited to 'libbcachefs/journal_io.h')
-rw-r--r--libbcachefs/journal_io.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/libbcachefs/journal_io.h b/libbcachefs/journal_io.h
new file mode 100644
index 00000000..4236b7fc
--- /dev/null
+++ b/libbcachefs/journal_io.h
@@ -0,0 +1,45 @@
+#ifndef _BCACHEFS_JOURNAL_IO_H
+#define _BCACHEFS_JOURNAL_IO_H
+
+struct bkey_i *bch2_journal_find_btree_root(struct bch_fs *, struct jset *,
+ enum btree_id, unsigned *);
+
+/*
+ * Only used for holding the journal entries we read in btree_journal_read()
+ * during cache_registration
+ */
+struct journal_replay {
+ struct list_head list;
+ struct bch_devs_list devs;
+ /* must be last: */
+ struct jset j;
+};
+
+static inline struct jset_entry *__jset_entry_type_next(struct jset *jset,
+ struct jset_entry *entry, unsigned type)
+{
+ while (entry < vstruct_last(jset)) {
+ if (entry->type == type)
+ return entry;
+
+ entry = vstruct_next(entry);
+ }
+
+ return NULL;
+}
+
+#define for_each_jset_entry_type(entry, jset, type) \
+ for (entry = (jset)->start; \
+ (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)
+
+int bch2_journal_read(struct bch_fs *, struct list_head *);
+
+int bch2_journal_entry_sectors(struct journal *);
+void bch2_journal_write(struct closure *);
+
+#endif /* _BCACHEFS_JOURNAL_IO_H */