]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/buckets_types.h
Update bcachefs sources to 96b991466a bcachefs: Improve error message in fsck
[bcachefs-tools-debian] / libbcachefs / buckets_types.h
index 0b1bd95419ca0f97e45c5d301e496c10c490f181..f3ff4a18b1fddaddae46f16a71fe27e0532ffc13 100644 (file)
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 #ifndef _BUCKETS_TYPES_H
 #define _BUCKETS_TYPES_H
 
@@ -8,28 +9,24 @@
 
 struct bucket_mark {
        union {
-       struct {
-               atomic64_t      v;
-       };
+       atomic64_t      v;
 
        struct {
-               u8              gen;
-               u8              data_type:3,
-                               gen_valid:1,
-                               owned_by_allocator:1,
-                               nouse: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;
+       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;
        };
        };
 };
@@ -41,6 +38,8 @@ struct bucket {
        };
 
        u16                             io_time[2];
+       u8                              oldest_gen;
+       unsigned                        gen_valid:1;
 };
 
 struct bucket_array {
@@ -64,26 +63,60 @@ struct bch_dev_usage {
 struct bch_fs_usage {
        /* all fields are in units of 512 byte sectors: */
 
-       struct {
-               u64             data[BCH_DATA_NR];
-               u64             ec_data;
-               u64             persistent_reserved;
-       }                       replicas[BCH_REPLICAS_MAX];
+       u64                     online_reserved;
 
-       u64                     buckets[BCH_DATA_NR];
+       /* fields after online_reserved are cleared/recalculated by gc: */
+       u64                     gc_start[0];
 
-       /* fields starting here aren't touched by gc: */
-       u64                     online_reserved;
-       u64                     available_cache;
+       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: */
+
+       u64                     persistent_reserved[BCH_REPLICAS_MAX];
+       u64                     replicas[];
+};
+
+struct bch_fs_usage_short {
+       u64                     capacity;
+       u64                     used;
+       u64                     free;
+       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:
  */
 struct disk_reservation {
-       u64             sectors;
-       u32             gen;
-       unsigned        nr_replicas;
+       u64                     sectors;
+       u32                     gen;
+       unsigned                nr_replicas;
 };
 
 struct copygc_heap_entry {