From 92e2338445e34baa5587c66c7176acaed343d751 Mon Sep 17 00:00:00 2001 From: Jian Yu Date: Thu, 19 Oct 2023 11:01:59 -0700 Subject: [PATCH] EX-8353 csdc: remove holes from struct ll_compr_hdr This patch reorganizes struct ll_compr_hdr to remove alignment holes. Test-Parameters: trivial Change-Id: I59800b00e3a17972d621bae21ba06509a39b1036 Signed-off-by: Jian Yu Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/52753 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger --- lustre/include/uapi/linux/lustre/lustre_idl.h | 8 ++++---- lustre/ptlrpc/wiretest.c | 26 +++++++++++++------------- lustre/utils/wirecheck.c | 18 ++++++------------ lustre/utils/wiretest.c | 26 +++++++++++++------------- 4 files changed, 36 insertions(+), 42 deletions(-) diff --git a/lustre/include/uapi/linux/lustre/lustre_idl.h b/lustre/include/uapi/linux/lustre/lustre_idl.h index 462e9a4..8a9a760 100644 --- a/lustre/include/uapi/linux/lustre/lustre_idl.h +++ b/lustre/include/uapi/linux/lustre/lustre_idl.h @@ -3793,11 +3793,11 @@ struct ladvise_hdr { struct ll_compr_hdr { __u64 llch_magic:48; /* LLCH_MAGIC */ __u8 llch_header_size; /* for future extensions */ - __u8 llch_exta_flags; + __u8 llch_extra_flags; + __u16 llch_flags; __u8 llch_compr_type; /* LLCH_COMP_GZIP, LLCH_COMP_LZ4, */ - __u8 llch_compr_level:4; /* per-algorithm mapped level */ - __u8 llch_flags:4; - __u8 llch_chunk_log_bits; + __u8 llch_compr_level:4, /* per-algorithm mapped level */ + llch_chunk_log_bits:4; __u32 llch_compr_size; /* bytes of compressed data */ __u32 llch_reserved; /* unused, initialize to 0 */ __u32 llch_uncompr_csum; /* crc32 of raw data, or 0 */ diff --git a/lustre/ptlrpc/wiretest.c b/lustre/ptlrpc/wiretest.c index bfc516b..2fc3523 100644 --- a/lustre/ptlrpc/wiretest.c +++ b/lustre/ptlrpc/wiretest.c @@ -787,22 +787,26 @@ void lustre_assert_wire_constants(void) (long long)(int)offsetof(struct ll_compr_hdr, llch_header_size)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_header_size) == 1, "found %lld\n", (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_header_size)); - LASSERTF((int)offsetof(struct ll_compr_hdr, llch_exta_flags) == 7, "found %lld\n", - (long long)(int)offsetof(struct ll_compr_hdr, llch_exta_flags)); - LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_exta_flags) == 1, "found %lld\n", - (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_exta_flags)); - LASSERTF((int)offsetof(struct ll_compr_hdr, llch_compr_type) == 8, "found %lld\n", + LASSERTF((int)offsetof(struct ll_compr_hdr, llch_extra_flags) == 7, "found %lld\n", + (long long)(int)offsetof(struct ll_compr_hdr, llch_extra_flags)); + LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_extra_flags) == 1, "found %lld\n", + (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_extra_flags)); + LASSERTF((int)offsetof(struct ll_compr_hdr, llch_flags) == 8, "found %lld\n", + (long long)(int)offsetof(struct ll_compr_hdr, llch_flags)); + LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_flags) == 2, "found %lld\n", + (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_flags)); + LASSERTF((int)offsetof(struct ll_compr_hdr, llch_compr_type) == 10, "found %lld\n", (long long)(int)offsetof(struct ll_compr_hdr, llch_compr_type)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_type) == 1, "found %lld\n", (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_type)); - LASSERTF((int)offsetof(struct ll_compr_hdr, llch_chunk_log_bits) == 10, "found %lld\n", - (long long)(int)offsetof(struct ll_compr_hdr, llch_chunk_log_bits)); - LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_chunk_log_bits) == 1, "found %lld\n", - (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_chunk_log_bits)); LASSERTF((int)offsetof(struct ll_compr_hdr, llch_compr_size) == 12, "found %lld\n", (long long)(int)offsetof(struct ll_compr_hdr, llch_compr_size)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_size) == 4, "found %lld\n", (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_size)); + LASSERTF((int)offsetof(struct ll_compr_hdr, llch_reserved) == 16, "found %lld\n", + (long long)(int)offsetof(struct ll_compr_hdr, llch_reserved)); + LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_reserved) == 4, "found %lld\n", + (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_reserved)); LASSERTF((int)offsetof(struct ll_compr_hdr, llch_uncompr_csum) == 20, "found %lld\n", (long long)(int)offsetof(struct ll_compr_hdr, llch_uncompr_csum)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_uncompr_csum) == 4, "found %lld\n", @@ -811,10 +815,6 @@ void lustre_assert_wire_constants(void) (long long)(int)offsetof(struct ll_compr_hdr, llch_compr_csum)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_csum) == 4, "found %lld\n", (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_csum)); - LASSERTF((int)offsetof(struct ll_compr_hdr, llch_reserved) == 16, "found %lld\n", - (long long)(int)offsetof(struct ll_compr_hdr, llch_reserved)); - LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_reserved) == 4, "found %lld\n", - (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_reserved)); LASSERTF((int)offsetof(struct ll_compr_hdr, llch_hdr_csum) == 28, "found %lld\n", (long long)(int)offsetof(struct ll_compr_hdr, llch_hdr_csum)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_hdr_csum) == 4, "found %lld\n", diff --git a/lustre/utils/wirecheck.c b/lustre/utils/wirecheck.c index a0f63c0..a3fe94e 100644 --- a/lustre/utils/wirecheck.c +++ b/lustre/utils/wirecheck.c @@ -399,23 +399,17 @@ check_ll_compr_hdr(void) { BLANK_LINE(); CHECK_STRUCT(ll_compr_hdr); - /* bit-field structure member cannot be checked */ - /* - CHECK_MEMBER(ll_compr_hdr, llch_magic:48); - */ + CHECK_BITFIELD(ll_compr_hdr, llch_magic); CHECK_MEMBER(ll_compr_hdr, llch_header_size); - CHECK_MEMBER(ll_compr_hdr, llch_exta_flags); + CHECK_MEMBER(ll_compr_hdr, llch_extra_flags); + CHECK_MEMBER(ll_compr_hdr, llch_flags); CHECK_MEMBER(ll_compr_hdr, llch_compr_type); - /* bit-field structure member cannot be checked */ - /* - CHECK_MEMBER(ll_compr_hdr, llch_comp_level:4); - CHECK_MEMBER(ll_compr_hdr, llch_flags:4); - */ - CHECK_MEMBER(ll_compr_hdr, llch_chunk_log_bits); + CHECK_BITFIELD(ll_compr_hdr, llch_comp_level); + CHECK_BITFIELD(ll_compr_hdr, llch_chunk_log_bits); CHECK_MEMBER(ll_compr_hdr, llch_compr_size); + CHECK_MEMBER(ll_compr_hdr, llch_reserved); CHECK_MEMBER(ll_compr_hdr, llch_uncompr_csum); CHECK_MEMBER(ll_compr_hdr, llch_compr_csum); - CHECK_MEMBER(ll_compr_hdr, llch_reserved); CHECK_MEMBER(ll_compr_hdr, llch_hdr_csum); CHECK_VALUE(LLCH_MAGIC); diff --git a/lustre/utils/wiretest.c b/lustre/utils/wiretest.c index 44c8a6d..b881ef8 100644 --- a/lustre/utils/wiretest.c +++ b/lustre/utils/wiretest.c @@ -823,22 +823,26 @@ void lustre_assert_wire_constants(void) (long long)(int)offsetof(struct ll_compr_hdr, llch_header_size)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_header_size) == 1, "found %lld\n", (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_header_size)); - LASSERTF((int)offsetof(struct ll_compr_hdr, llch_exta_flags) == 7, "found %lld\n", - (long long)(int)offsetof(struct ll_compr_hdr, llch_exta_flags)); - LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_exta_flags) == 1, "found %lld\n", - (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_exta_flags)); - LASSERTF((int)offsetof(struct ll_compr_hdr, llch_compr_type) == 8, "found %lld\n", + LASSERTF((int)offsetof(struct ll_compr_hdr, llch_extra_flags) == 7, "found %lld\n", + (long long)(int)offsetof(struct ll_compr_hdr, llch_extra_flags)); + LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_extra_flags) == 1, "found %lld\n", + (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_extra_flags)); + LASSERTF((int)offsetof(struct ll_compr_hdr, llch_flags) == 8, "found %lld\n", + (long long)(int)offsetof(struct ll_compr_hdr, llch_flags)); + LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_flags) == 2, "found %lld\n", + (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_flags)); + LASSERTF((int)offsetof(struct ll_compr_hdr, llch_compr_type) == 10, "found %lld\n", (long long)(int)offsetof(struct ll_compr_hdr, llch_compr_type)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_type) == 1, "found %lld\n", (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_type)); - LASSERTF((int)offsetof(struct ll_compr_hdr, llch_chunk_log_bits) == 10, "found %lld\n", - (long long)(int)offsetof(struct ll_compr_hdr, llch_chunk_log_bits)); - LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_chunk_log_bits) == 1, "found %lld\n", - (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_chunk_log_bits)); LASSERTF((int)offsetof(struct ll_compr_hdr, llch_compr_size) == 12, "found %lld\n", (long long)(int)offsetof(struct ll_compr_hdr, llch_compr_size)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_size) == 4, "found %lld\n", (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_size)); + LASSERTF((int)offsetof(struct ll_compr_hdr, llch_reserved) == 16, "found %lld\n", + (long long)(int)offsetof(struct ll_compr_hdr, llch_reserved)); + LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_reserved) == 4, "found %lld\n", + (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_reserved)); LASSERTF((int)offsetof(struct ll_compr_hdr, llch_uncompr_csum) == 20, "found %lld\n", (long long)(int)offsetof(struct ll_compr_hdr, llch_uncompr_csum)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_uncompr_csum) == 4, "found %lld\n", @@ -847,10 +851,6 @@ void lustre_assert_wire_constants(void) (long long)(int)offsetof(struct ll_compr_hdr, llch_compr_csum)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_csum) == 4, "found %lld\n", (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_compr_csum)); - LASSERTF((int)offsetof(struct ll_compr_hdr, llch_reserved) == 16, "found %lld\n", - (long long)(int)offsetof(struct ll_compr_hdr, llch_reserved)); - LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_reserved) == 4, "found %lld\n", - (long long)(int)sizeof(((struct ll_compr_hdr *)0)->llch_reserved)); LASSERTF((int)offsetof(struct ll_compr_hdr, llch_hdr_csum) == 28, "found %lld\n", (long long)(int)offsetof(struct ll_compr_hdr, llch_hdr_csum)); LASSERTF((int)sizeof(((struct ll_compr_hdr *)0)->llch_hdr_csum) == 4, "found %lld\n", -- 1.8.3.1