Re: [PATCH 1/3] btrfs-progs: unify sizeof(struct btrfs_super_block) and BTRFS_SUPER_INFO_SIZE
From: Qu Wenruo <hidden>
Date: 2021-10-21 12:49:58
On 2021/10/21 20:40, David Sterba wrote:
On Thu, Oct 21, 2021 at 09:40:18AM +0800, Qu Wenruo wrote:quoted
Just like kernel change, pad struct btrfs_super_block to 4096 bytes. Signed-off-by: Qu Wenruo <redacted> --- kernel-shared/ctree.h | 7 +++++++ kernel-shared/disk-io.h | 3 --- 2 files changed, 7 insertions(+), 3 deletions(-)diff --git a/kernel-shared/ctree.h b/kernel-shared/ctree.h index 563ea50b3587..6451690ce4fa 100644 --- a/kernel-shared/ctree.h +++ b/kernel-shared/ctree.h@@ -406,6 +406,9 @@ struct btrfs_root_backup { u8 unused_8[10]; } __attribute__ ((__packed__)); +#define BTRFS_SUPER_INFO_OFFSET SZ_64K +#define BTRFS_SUPER_INFO_SIZE 4096 + /* * the super block basically lists the main trees of the FS * it currently lacks any block count etc etc@@ -456,8 +459,12 @@ struct btrfs_super_block { __le64 reserved[28]; u8 sys_chunk_array[BTRFS_SYSTEM_CHUNK_ARRAY_SIZE]; struct btrfs_root_backup super_roots[BTRFS_NUM_BACKUP_ROOTS]; + /* Padded to 4096 bytes */ + u8 padding[565]; } __attribute__ ((__packed__)); +static_assert(sizeof(struct btrfs_super_block) == BTRFS_SUPER_INFO_SIZE);Using static_assert breaks build on musl (you can verify that by running ci/ci-build-musl if you have docker installed and set up). There already is macro BUILD_ASSERT used in ioctl.h, eventually we can copy the static_assert from kernel or use _Static_assert directly.
Mind to fix that on your side? As I don't yet have any building environment for musl to verify the failure or fix. Thanks, Qu