Add a new header that captures the DRBD 9 on-disk metadata layout, enabling state tracking for multiple peers. It includes the per-device superblock and per-peer slot structures needed to track bitmap UUIDs and sync state for each peer. Co-developed-by: Philipp Reisner Signed-off-by: Philipp Reisner Signed-off-by: Christoph Böhmwalder --- drivers/block/drbd/drbd_meta_data.h | 170 ++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 drivers/block/drbd/drbd_meta_data.h diff --git a/drivers/block/drbd/drbd_meta_data.h b/drivers/block/drbd/drbd_meta_data.h new file mode 100644 index 000000000000..400803267c83 --- /dev/null +++ b/drivers/block/drbd/drbd_meta_data.h @@ -0,0 +1,170 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef DRBD_META_DATA_H +#define DRBD_META_DATA_H + +#ifdef __KERNEL__ +#define be_u64 __be64 +#define be_s64 __be64 +#define be_u32 __be32 +#define be_s32 __be32 +#define be_u16 __be16 +#else +#define be_u64 struct { uint64_t be; } +#define be_s64 struct { int64_t be; } +#define be_u32 struct { uint32_t be; } +#define be_s32 struct { int32_t be; } +#define be_u16 struct { uint16_t be; } +#endif + +/* how I came up with this magic? + * base64 decode "actlog==" ;) + */ +#define DRBD_AL_MAGIC 0x69cb65a2 + +#define BM_BLOCK_SHIFT_4k 12 /* 4k per bit */ +#define BM_BLOCK_SHIFT_MIN BM_BLOCK_SHIFT_4k +#define BM_BLOCK_SHIFT_MAX 20 +#define BM_BLOCK_SIZE_4k 4096 +#define BM_BLOCK_SIZE_MIN (1<