]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/btree_io.h
Update bcachefs sources to 14e9ac5016 bcachefs: btree_iter fastpath
[bcachefs-tools-debian] / libbcachefs / btree_io.h
index d023dfae6d9786b5ee47c789a74000b907274fc5..91263eeac48e1456c6ecd96cd9439522e33cc9d1 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));
@@ -28,7 +37,7 @@ 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) &&
-               list_empty_careful(&b->reachable);
+               !b->will_make_reachable;
 }
 
 enum compact_mode {
@@ -64,12 +73,13 @@ 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);
 
 void bch2_btree_complete_write(struct bch_fs *, struct btree *,
                              struct btree_write *);
+void bch2_btree_write_error_work(struct work_struct *);
 
 void __bch2_btree_node_write(struct bch_fs *, struct btree *,
                            struct closure *, enum six_lock_type);