From 527a301a5cd8cd46337e54831b2c83bc328e7ca4 Mon Sep 17 00:00:00 2001 From: Fan Yong Date: Thu, 24 Jun 2010 14:01:59 +0800 Subject: [PATCH] b=19427 add the missing swab field for "rr_flags" in "mdt_reint_rec" add the missing swab field for "rr_flags" in "mdt_reint_rec". i=andreas.dilger i=robert.read --- lustre/include/lustre/lustre_idl.h | 99 +++++++++++++++++++++----------------- lustre/ptlrpc/pack_generic.c | 2 +- 2 files changed, 57 insertions(+), 44 deletions(-) diff --git a/lustre/include/lustre/lustre_idl.h b/lustre/include/lustre/lustre_idl.h index f8e5e23..567ebb8 100644 --- a/lustre/include/lustre/lustre_idl.h +++ b/lustre/include/lustre/lustre_idl.h @@ -1847,6 +1847,7 @@ enum { MDS_CLOSE_CLEANUP = 1 << 6 }; +/* instance of mdt_reint_rec */ struct mdt_rec_create { __u32 cr_opcode; __u32 cr_cap; @@ -1864,15 +1865,16 @@ struct mdt_rec_create { __u64 cr_time; __u64 cr_rdev; __u64 cr_ioepoch; - __u64 cr_padding_1; /* pad for 64 bits*/ + __u64 cr_padding_1; /* rr_blocks */ __u32 cr_mode; __u32 cr_bias; - __u32 cr_flags; /* for use with open */ - __u32 cr_padding_2; - __u32 cr_padding_3; - __u32 cr_padding_4; + __u32 cr_flags; /* for use with open */ + __u32 cr_padding_2; /* rr_padding_2 */ + __u32 cr_padding_3; /* rr_padding_3 */ + __u32 cr_padding_4; /* rr_padding_4 */ }; +/* instance of mdt_reint_rec */ struct mdt_rec_link { __u32 lk_opcode; __u32 lk_cap; @@ -1887,18 +1889,19 @@ struct mdt_rec_link { struct lu_fid lk_fid1; struct lu_fid lk_fid2; __u64 lk_time; - __u64 lk_padding_1; - __u64 lk_padding_2; - __u64 lk_padding_3; - __u64 lk_padding_4; + __u64 lk_padding_1; /* rr_atime */ + __u64 lk_padding_2; /* rr_ctime */ + __u64 lk_padding_3; /* rr_size */ + __u64 lk_padding_4; /* rr_blocks */ __u32 lk_bias; - __u32 lk_padding_5; - __u32 lk_padding_6; - __u32 lk_padding_7; - __u32 lk_padding_8; - __u32 lk_padding_9; + __u32 lk_padding_5; /* rr_mode */ + __u32 lk_padding_6; /* rr_flags */ + __u32 lk_padding_7; /* rr_padding_2 */ + __u32 lk_padding_8; /* rr_padding_3 */ + __u32 lk_padding_9; /* rr_padding_4 */ }; +/* instance of mdt_reint_rec */ struct mdt_rec_unlink { __u32 ul_opcode; __u32 ul_cap; @@ -1913,18 +1916,19 @@ struct mdt_rec_unlink { struct lu_fid ul_fid1; struct lu_fid ul_fid2; __u64 ul_time; - __u64 ul_padding_2; - __u64 ul_padding_3; - __u64 ul_padding_4; - __u64 ul_padding_5; + __u64 ul_padding_2; /* rr_atime */ + __u64 ul_padding_3; /* rr_ctime */ + __u64 ul_padding_4; /* rr_size */ + __u64 ul_padding_5; /* rr_blocks */ __u32 ul_bias; __u32 ul_mode; - __u32 ul_padding_6; - __u32 ul_padding_7; - __u32 ul_padding_8; - __u32 ul_padding_9; + __u32 ul_padding_6; /* rr_flags */ + __u32 ul_padding_7; /* rr_padding_2 */ + __u32 ul_padding_8; /* rr_padding_3 */ + __u32 ul_padding_9; /* rr_padding_4 */ }; +/* instance of mdt_reint_rec */ struct mdt_rec_rename { __u32 rn_opcode; __u32 rn_cap; @@ -1939,18 +1943,19 @@ struct mdt_rec_rename { struct lu_fid rn_fid1; struct lu_fid rn_fid2; __u64 rn_time; - __u64 rn_padding_1; - __u64 rn_padding_2; - __u64 rn_padding_3; - __u64 rn_padding_4; - __u32 rn_bias; /* some operation flags */ - __u32 rn_mode; /* cross-ref rename has mode */ - __u32 rn_padding_5; - __u32 rn_padding_6; - __u32 rn_padding_7; - __u32 rn_padding_8; -}; - + __u64 rn_padding_1; /* rr_atime */ + __u64 rn_padding_2; /* rr_ctime */ + __u64 rn_padding_3; /* rr_size */ + __u64 rn_padding_4; /* rr_blocks */ + __u32 rn_bias; /* some operation flags */ + __u32 rn_mode; /* cross-ref rename has mode */ + __u32 rn_padding_5; /* rr_flags */ + __u32 rn_padding_6; /* rr_padding_2 */ + __u32 rn_padding_7; /* rr_padding_3 */ + __u32 rn_padding_8; /* rr_padding_4 */ +}; + +/* instance of mdt_reint_rec */ struct mdt_rec_setxattr { __u32 sx_opcode; __u32 sx_cap; @@ -1963,22 +1968,30 @@ struct mdt_rec_setxattr { __u32 sx_suppgid2; __u32 sx_suppgid2_h; struct lu_fid sx_fid; - __u64 sx_padding_1; /* These three members are lu_fid size */ + __u64 sx_padding_1; /* These three are rr_fid2 */ __u32 sx_padding_2; __u32 sx_padding_3; __u64 sx_valid; __u64 sx_time; - __u64 sx_padding_5; - __u64 sx_padding_6; - __u64 sx_padding_7; + __u64 sx_padding_5; /* rr_ctime */ + __u64 sx_padding_6; /* rr_size */ + __u64 sx_padding_7; /* rr_blocks */ __u32 sx_size; __u32 sx_flags; - __u32 sx_padding_8; - __u32 sx_padding_9; - __u32 sx_padding_10; - __u32 sx_padding_11; + __u32 sx_padding_8; /* rr_flags */ + __u32 sx_padding_9; /* rr_padding_2 */ + __u32 sx_padding_10; /* rr_padding_3 */ + __u32 sx_padding_11; /* rr_padding_4 */ }; +/* + * mdt_rec_reint is the template for all mdt_reint_xxx structures. + * Do NOT change the size of various members, otherwise the value + * will be broken in lustre_swab_mdt_rec_reint(). + * + * If you add new members in other mdt_reint_xxx structres and need to use the + * rr_padding_x fields, then update lustre_swab_mdt_rec_reint() also. + */ struct mdt_rec_reint { __u32 rr_opcode; __u32 rr_cap; @@ -1999,7 +2012,7 @@ struct mdt_rec_reint { __u64 rr_blocks; __u32 rr_bias; __u32 rr_mode; - __u32 rr_padding_1; /* also fix lustre_swab_mdt_rec_reint */ + __u32 rr_flags; __u32 rr_padding_2; /* also fix lustre_swab_mdt_rec_reint */ __u32 rr_padding_3; /* also fix lustre_swab_mdt_rec_reint */ __u32 rr_padding_4; /* also fix lustre_swab_mdt_rec_reint */ diff --git a/lustre/ptlrpc/pack_generic.c b/lustre/ptlrpc/pack_generic.c index 519434b..4412167 100644 --- a/lustre/ptlrpc/pack_generic.c +++ b/lustre/ptlrpc/pack_generic.c @@ -1877,8 +1877,8 @@ void lustre_swab_mdt_rec_reint (struct mdt_rec_reint *rr) __swab64s (&rr->rr_blocks); __swab32s (&rr->rr_bias); __swab32s (&rr->rr_mode); + __swab32s (&rr->rr_flags); - CLASSERT(offsetof(typeof(*rr), rr_padding_1) != 0); CLASSERT(offsetof(typeof(*rr), rr_padding_2) != 0); CLASSERT(offsetof(typeof(*rr), rr_padding_3) != 0); CLASSERT(offsetof(typeof(*rr), rr_padding_4) != 0); -- 1.8.3.1