]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/io_types.h
Update bcachefs sources to e990c131de fixup! bcachefs: BTREE_ID_snapshot_tree
[bcachefs-tools-debian] / libbcachefs / io_types.h
index b23727d212b9d9353a0f9bc3531c9508d0c29351..4149291c0df6f153f8f7a147eed75487767efd18 100644 (file)
@@ -58,8 +58,19 @@ struct bch_read_bio {
        struct bch_devs_list    devs_have;
 
        struct extent_ptr_decoded pick;
-       /* start pos of data we read (may not be pos of data we want) */
-       struct bpos             pos;
+
+       /*
+        * pos we read from - different from data_pos for indirect extents:
+        */
+       u32                     subvol;
+       struct bpos             read_pos;
+
+       /*
+        * start pos of data we read (may not be pos of data we want) - for
+        * promote, narrow extents paths:
+        */
+       enum btree_id           data_btree;
+       struct bpos             data_pos;
        struct bversion         version;
 
        struct promote_op       *promote;
@@ -72,10 +83,12 @@ struct bch_read_bio {
 };
 
 struct bch_write_bio {
+       struct_group(wbio,
        struct bch_fs           *c;
        struct bch_write_bio    *parent;
 
        u64                     submit_time;
+       u64                     inode_offset;
 
        struct bch_devs_list    failed;
        u8                      dev;
@@ -84,7 +97,10 @@ struct bch_write_bio {
                                bounce:1,
                                put_bio:1,
                                have_ioref:1,
-                               used_mempool:1;
+                               nocow:1,
+                               used_mempool:1,
+                               first_btree_write:1;
+       );
 
        struct bio              bio;
 };
@@ -105,12 +121,14 @@ struct bch_write_op {
        unsigned                nr_replicas_required:4;
        unsigned                alloc_reserve:3;
        unsigned                incompressible:1;
+       unsigned                stripe_waited:1;
 
        struct bch_devs_list    devs_have;
        u16                     target;
        u16                     nonce;
        struct bch_io_opts      opts;
 
+       u32                     subvol;
        struct bpos             pos;
        struct bversion         version;
 
@@ -119,28 +137,27 @@ struct bch_write_op {
 
        struct write_point_specifier write_point;
 
+       struct write_point      *wp;
+       struct list_head        wp_list;
+
        struct disk_reservation res;
 
        struct open_buckets     open_buckets;
 
-       /*
-        * If caller wants to flush but hasn't passed us a journal_seq ptr, we
-        * still need to stash the journal_seq somewhere:
-        */
-       union {
-               u64                     *journal_seq_p;
-               u64                     journal_seq;
-       };
        u64                     new_i_size;
        s64                     i_sectors_delta;
 
-       int                     (*index_update_fn)(struct bch_write_op *);
-
        struct bch_devs_mask    failed;
 
        struct keylist          insert_keys;
        u64                     inline_keys[BKEY_EXTENT_U64s_MAX * 2];
 
+       /*
+        * Bitmask of devices that have had nocow writes issued to them since
+        * last flush:
+        */
+       struct bch_devs_mask    *devs_need_flush;
+
        /* Must be last: */
        struct bch_write_bio    wbio;
 };