]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/btree_io.h
Update bcachefs sources to 2e70771b8d
[bcachefs-tools-debian] / libbcachefs / btree_io.h
index 84731144b5e5d93362bf561ebe33f58193041753..7333f3052c65f2db03b410ff36f54763cc78efdc 100644 (file)
@@ -1,11 +1,20 @@
 #ifndef _BCACHE_BTREE_IO_H
 #define _BCACHE_BTREE_IO_H
 
+#include "extents.h"
+
 struct bch_fs;
 struct btree_write;
 struct btree;
 struct btree_iter;
 
+struct btree_read_bio {
+       struct bch_fs           *c;
+       struct extent_pick_ptr  pick;
+       struct work_struct      work;
+       struct bio              bio;
+};
+
 static inline void btree_node_io_unlock(struct btree *b)
 {
        EBUG_ON(!btree_node_write_in_flight(b));
@@ -27,7 +36,8 @@ static inline void btree_node_wait_on_io(struct btree *b)
 
 static inline bool btree_node_may_write(struct btree *b)
 {
-       return list_empty_careful(&b->write_blocked);
+       return list_empty_careful(&b->write_blocked) &&
+               list_empty_careful(&b->reachable);
 }
 
 enum compact_mode {
@@ -63,7 +73,7 @@ void bch2_btree_init_next(struct bch_fs *, struct btree *,
 
 void bch2_btree_node_read_done(struct bch_fs *, struct btree *,
                              struct bch_dev *, const struct bch_extent_ptr *);
-void bch2_btree_node_read(struct bch_fs *, struct btree *);
+void bch2_btree_node_read(struct bch_fs *, struct btree *, bool);
 int bch2_btree_root_read(struct bch_fs *, enum btree_id,
                        const struct bkey_i *, unsigned);
 
@@ -80,6 +90,8 @@ void bch2_btree_node_write(struct bch_fs *, struct btree *,
 #define bch2_btree_node_write_dirty(_c, _b, _cl, cond)                 \
 do {                                                                   \
        while ((_b)->written && btree_node_dirty(_b) && (cond)) {       \
+               set_btree_node_need_write(_b);                          \
+                                                                       \
                if (!btree_node_may_write(_b))                          \
                        break;                                          \
                                                                        \
@@ -94,8 +106,6 @@ do {                                                                 \
        }                                                               \
 } while (0)
 
-void bch2_btree_flush(struct bch_fs *);
-void bch2_btree_node_flush_journal_entries(struct bch_fs *, struct btree *,
-                                         struct closure *);
+void bch2_btree_verify_flushed(struct bch_fs *);
 
 #endif /* _BCACHE_BTREE_IO_H */