summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-01-13 15:41:50 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2025-01-14 10:45:31 -0500
commita4e11cea277eee080d421b62e457968fd8c92a53 (patch)
tree2be79e525f14eea0cb51afed722c0c47d257146d
parent78423deb51ed5acd2ae5e2b7212a14a0da01b39a (diff)
bcachefs: Document issue with bch_stripe layout
We've got a problem with bch_stripe that is going to take an on disk format rev to fix - we can't access the block sector counts if the checksum type is unknown. Document it for now, there are a few other things to fix as well. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--fs/bcachefs/ec_format.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/fs/bcachefs/ec_format.h b/fs/bcachefs/ec_format.h
index 64ef52e00078..b9770f24f213 100644
--- a/fs/bcachefs/ec_format.h
+++ b/fs/bcachefs/ec_format.h
@@ -20,6 +20,23 @@ struct bch_stripe {
*/
__u8 disk_label;
+ /*
+ * Variable length sections:
+ * - Pointers
+ * - Checksums
+ * 2D array of [stripe block/device][csum block], with checksum block
+ * size given by csum_granularity_bits
+ * - Block sector counts: per-block array of u16s
+ *
+ * XXX:
+ * Either checksums should have come last, or we should have included a
+ * checksum_size field (the size in bytes of the checksum itself, not
+ * the blocksize the checksum covers).
+ *
+ * Currently we aren't able to access the block sector counts if the
+ * checksum type is unknown.
+ */
+
struct bch_extent_ptr ptrs[];
} __packed __aligned(8);