]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/buckets_types.h
Disable pristine-tar option in gbp.conf, since there is no pristine-tar branch.
[bcachefs-tools-debian] / libbcachefs / buckets_types.h
index 53f22726893df49ca875b0d9bac2721f10788394..6a31740222a7132e3f0735675ba63ed3402f00a8 100644 (file)
@@ -7,40 +7,15 @@
 
 #define BUCKET_JOURNAL_SEQ_BITS                16
 
-struct bucket_mark {
-       union {
-       atomic64_t      v;
-
-       struct {
-       u8              gen;
-       u8              data_type:3,
-                       owned_by_allocator:1,
-                       journal_seq_valid:1,
-                       stripe:1;
-       u16             dirty_sectors;
-       u16             cached_sectors;
-
-       /*
-        * low bits of journal sequence number when this bucket was most
-        * recently modified: if journal_seq_valid is set, this bucket can't be
-        * reused until the journal sequence number written to disk is >= the
-        * bucket's journal sequence number:
-        */
-       u16             journal_seq;
-       };
-       };
-};
-
 struct bucket {
-       union {
-               struct bucket_mark      _mark;
-               const struct bucket_mark mark;
-       };
-
-       u16                             io_time[2];
-       u8                              oldest_gen;
-       u8                              gc_gen;
-       unsigned                        gen_valid:1;
+       u8                      lock;
+       u8                      gen_valid:1;
+       u8                      data_type:7;
+       u8                      gen;
+       u8                      stripe_redundancy;
+       u32                     stripe;
+       u32                     dirty_sectors;
+       u32                     cached_sectors;
 };
 
 struct bucket_array {
@@ -50,46 +25,47 @@ struct bucket_array {
        struct bucket           b[];
 };
 
-struct bch_dev_usage {
-       u64                     buckets[BCH_DATA_NR];
-       u64                     buckets_alloc;
-       u64                     buckets_unavailable;
-
-       /* _compressed_ sectors: */
-       u64                     sectors[BCH_DATA_NR];
-       u64                     sectors_fragmented;
-
-       u64                     buckets_ec;
-       u64                     sectors_ec;
+struct bucket_gens {
+       struct rcu_head         rcu;
+       u16                     first_bucket;
+       size_t                  nbuckets;
+       u8                      b[];
 };
 
-struct bch_fs_usage {
-       /* all fields are in units of 512 byte sectors: */
-
-       u64                     online_reserved;
-
-       /* fields after online_reserved are cleared/recalculated by gc: */
-       u64                     gc_start[0];
+struct bch_dev_usage {
+       struct {
+               u64             buckets;
+               u64             sectors; /* _compressed_ sectors: */
+               /*
+                * XXX
+                * Why do we have this? Isn't it just buckets * bucket_size -
+                * sectors?
+                */
+               u64             fragmented;
+       }                       d[BCH_DATA_NR];
+};
 
+struct bch_fs_usage_base {
        u64                     hidden;
        u64                     btree;
        u64                     data;
        u64                     cached;
        u64                     reserved;
        u64                     nr_inodes;
+};
 
-       /* XXX: add stats for compression ratio */
-#if 0
-       u64                     uncompressed;
-       u64                     compressed;
-#endif
-
-       /* broken out: */
-
+struct bch_fs_usage {
+       /* all fields are in units of 512 byte sectors: */
+       struct bch_fs_usage_base b;
        u64                     persistent_reserved[BCH_REPLICAS_MAX];
        u64                     replicas[];
 };
 
+struct bch_fs_usage_online {
+       u64                     online_reserved;
+       struct bch_fs_usage     u;
+};
+
 struct bch_fs_usage_short {
        u64                     capacity;
        u64                     used;
@@ -97,22 +73,6 @@ struct bch_fs_usage_short {
        u64                     nr_inodes;
 };
 
-struct replicas_delta {
-       s64                     delta;
-       struct bch_replicas_entry r;
-} __packed;
-
-struct replicas_delta_list {
-       unsigned                size;
-       unsigned                used;
-
-       struct                  {} memset_start;
-       u64                     nr_inodes;
-       u64                     persistent_reserved[BCH_REPLICAS_MAX];
-       struct                  {} memset_end;
-       struct replicas_delta   d[0];
-};
-
 /*
  * A reservation for space on disk:
  */
@@ -122,12 +82,4 @@ struct disk_reservation {
        unsigned                nr_replicas;
 };
 
-struct copygc_heap_entry {
-       u8                      gen;
-       u32                     sectors;
-       u64                     offset;
-};
-
-typedef HEAP(struct copygc_heap_entry) copygc_heap;
-
 #endif /* _BUCKETS_TYPES_H */