From: Lai Siyao Date: Mon, 15 Apr 2013 05:47:10 +0000 (+0800) Subject: LU-3165 ptlrpc: missing fields in mdt_rec_reint X-Git-Tag: 2.3.65~95 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=e3a51ab85f4686edf7ed3fc5cd4453bcc5b82545;p=fs%2Flustre-release.git LU-3165 ptlrpc: missing fields in mdt_rec_reint Fields rr_flags_h and rr_umask are missing in mdt_rec_reint, as may cause swab issue in non-x86 system. Signed-off-by: Lai Siyao Change-Id: I9a7b9a6b2fca6f16a03c48b2ae1ec5eae9852f76 Reviewed-on: http://review.whamcloud.com/6054 Tested-by: Hudson Reviewed-by: Bobi Jam Tested-by: Maloo Tested-by: Jian Yu Reviewed-by: Jian Yu Reviewed-by: Ned Bass Reviewed-by: Oleg Drokin --- diff --git a/lustre/include/lustre/lustre_idl.h b/lustre/include/lustre/lustre_idl.h index 0704f12..176b747 100644 --- a/lustre/include/lustre/lustre_idl.h +++ b/lustre/include/lustre/lustre_idl.h @@ -2542,29 +2542,29 @@ struct mdt_rec_setxattr { * rr_padding_x fields, then update lustre_swab_mdt_rec_reint() also. */ struct mdt_rec_reint { - __u32 rr_opcode; - __u32 rr_cap; - __u32 rr_fsuid; - __u32 rr_fsuid_h; - __u32 rr_fsgid; - __u32 rr_fsgid_h; - __u32 rr_suppgid1; - __u32 rr_suppgid1_h; - __u32 rr_suppgid2; - __u32 rr_suppgid2_h; - struct lu_fid rr_fid1; - struct lu_fid rr_fid2; - obd_time rr_mtime; - obd_time rr_atime; - obd_time rr_ctime; - __u64 rr_size; - __u64 rr_blocks; - __u32 rr_bias; - __u32 rr_mode; - __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 */ + __u32 rr_opcode; + __u32 rr_cap; + __u32 rr_fsuid; + __u32 rr_fsuid_h; + __u32 rr_fsgid; + __u32 rr_fsgid_h; + __u32 rr_suppgid1; + __u32 rr_suppgid1_h; + __u32 rr_suppgid2; + __u32 rr_suppgid2_h; + struct lu_fid rr_fid1; + struct lu_fid rr_fid2; + obd_time rr_mtime; + obd_time rr_atime; + obd_time rr_ctime; + __u64 rr_size; + __u64 rr_blocks; + __u32 rr_bias; + __u32 rr_mode; + __u32 rr_flags; + __u32 rr_flags_h; + __u32 rr_umask; + __u32 rr_padding_4; /* also fix lustre_swab_mdt_rec_reint */ }; extern void lustre_swab_mdt_rec_reint(struct mdt_rec_reint *rr); diff --git a/lustre/ptlrpc/pack_generic.c b/lustre/ptlrpc/pack_generic.c index f2cd2bc..8c4bd89 100644 --- a/lustre/ptlrpc/pack_generic.c +++ b/lustre/ptlrpc/pack_generic.c @@ -2065,30 +2065,30 @@ EXPORT_SYMBOL(lustre_swab_lip_header); void lustre_swab_mdt_rec_reint (struct mdt_rec_reint *rr) { - __swab32s (&rr->rr_opcode); - __swab32s (&rr->rr_cap); - __swab32s (&rr->rr_fsuid); - /* rr_fsuid_h is unused */ - __swab32s (&rr->rr_fsgid); - /* rr_fsgid_h is unused */ - __swab32s (&rr->rr_suppgid1); - /* rr_suppgid1_h is unused */ - __swab32s (&rr->rr_suppgid2); - /* rr_suppgid2_h is unused */ - lustre_swab_lu_fid (&rr->rr_fid1); - lustre_swab_lu_fid (&rr->rr_fid2); - __swab64s (&rr->rr_mtime); - __swab64s (&rr->rr_atime); - __swab64s (&rr->rr_ctime); - __swab64s (&rr->rr_size); - __swab64s (&rr->rr_blocks); - __swab32s (&rr->rr_bias); - __swab32s (&rr->rr_mode); - __swab32s (&rr->rr_flags); - - CLASSERT(offsetof(typeof(*rr), rr_padding_2) != 0); - CLASSERT(offsetof(typeof(*rr), rr_padding_3) != 0); - CLASSERT(offsetof(typeof(*rr), rr_padding_4) != 0); + __swab32s(&rr->rr_opcode); + __swab32s(&rr->rr_cap); + __swab32s(&rr->rr_fsuid); + /* rr_fsuid_h is unused */ + __swab32s(&rr->rr_fsgid); + /* rr_fsgid_h is unused */ + __swab32s(&rr->rr_suppgid1); + /* rr_suppgid1_h is unused */ + __swab32s(&rr->rr_suppgid2); + /* rr_suppgid2_h is unused */ + lustre_swab_lu_fid(&rr->rr_fid1); + lustre_swab_lu_fid(&rr->rr_fid2); + __swab64s(&rr->rr_mtime); + __swab64s(&rr->rr_atime); + __swab64s(&rr->rr_ctime); + __swab64s(&rr->rr_size); + __swab64s(&rr->rr_blocks); + __swab32s(&rr->rr_bias); + __swab32s(&rr->rr_mode); + __swab32s(&rr->rr_flags); + __swab32s(&rr->rr_flags_h); + __swab32s(&rr->rr_umask); + + CLASSERT(offsetof(typeof(*rr), rr_padding_4) != 0); }; EXPORT_SYMBOL(lustre_swab_mdt_rec_reint); diff --git a/lustre/ptlrpc/wiretest.c b/lustre/ptlrpc/wiretest.c index d5b4386..b9cc36f 100644 --- a/lustre/ptlrpc/wiretest.c +++ b/lustre/ptlrpc/wiretest.c @@ -54,8 +54,8 @@ void lustre_assert_wire_constants(void) { /* Wire protocol assertions generated by 'wirecheck' * (make -C lustre/utils newwiretest) - * running on Linux node7 2.6.32 #1 SMP Tue Dec 18 04:02:25 MSK 2012 x86_64 x86_64 x86_64 GNU - * with gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) */ + * running on Linux deva 2.6.32.279.lustre #5 SMP Tue Apr 9 22:52:17 CST 2013 x86_64 x86_64 x + * with gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) */ /* Constants... */ @@ -2817,14 +2817,14 @@ void lustre_assert_wire_constants(void) (long long)(int)offsetof(struct mdt_rec_reint, rr_flags)); LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_flags) == 4, "found %lld\n", (long long)(int)sizeof(((struct mdt_rec_reint *)0)->rr_flags)); - LASSERTF((int)offsetof(struct mdt_rec_reint, rr_padding_2) == 124, "found %lld\n", - (long long)(int)offsetof(struct mdt_rec_reint, rr_padding_2)); - LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_padding_2) == 4, "found %lld\n", - (long long)(int)sizeof(((struct mdt_rec_reint *)0)->rr_padding_2)); - LASSERTF((int)offsetof(struct mdt_rec_reint, rr_padding_3) == 128, "found %lld\n", - (long long)(int)offsetof(struct mdt_rec_reint, rr_padding_3)); - LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_padding_3) == 4, "found %lld\n", - (long long)(int)sizeof(((struct mdt_rec_reint *)0)->rr_padding_3)); + LASSERTF((int)offsetof(struct mdt_rec_reint, rr_flags_h) == 124, "found %lld\n", + (long long)(int)offsetof(struct mdt_rec_reint, rr_flags_h)); + LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_flags_h) == 4, "found %lld\n", + (long long)(int)sizeof(((struct mdt_rec_reint *)0)->rr_flags_h)); + LASSERTF((int)offsetof(struct mdt_rec_reint, rr_umask) == 128, "found %lld\n", + (long long)(int)offsetof(struct mdt_rec_reint, rr_umask)); + LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_umask) == 4, "found %lld\n", + (long long)(int)sizeof(((struct mdt_rec_reint *)0)->rr_umask)); LASSERTF((int)offsetof(struct mdt_rec_reint, rr_padding_4) == 132, "found %lld\n", (long long)(int)offsetof(struct mdt_rec_reint, rr_padding_4)); LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_padding_4) == 4, "found %lld\n", diff --git a/lustre/utils/wirecheck.c b/lustre/utils/wirecheck.c index f1a75cd..f697364 100644 --- a/lustre/utils/wirecheck.c +++ b/lustre/utils/wirecheck.c @@ -1173,8 +1173,8 @@ check_mdt_rec_reint(void) CHECK_MEMBER(mdt_rec_reint, rr_bias); CHECK_MEMBER(mdt_rec_reint, rr_mode); CHECK_MEMBER(mdt_rec_reint, rr_flags); - CHECK_MEMBER(mdt_rec_reint, rr_padding_2); - CHECK_MEMBER(mdt_rec_reint, rr_padding_3); + CHECK_MEMBER(mdt_rec_reint, rr_flags_h); + CHECK_MEMBER(mdt_rec_reint, rr_umask); CHECK_MEMBER(mdt_rec_reint, rr_padding_4); } diff --git a/lustre/utils/wiretest.c b/lustre/utils/wiretest.c index 87dc49b..c35024c 100644 --- a/lustre/utils/wiretest.c +++ b/lustre/utils/wiretest.c @@ -62,8 +62,8 @@ void lustre_assert_wire_constants(void) { /* Wire protocol assertions generated by 'wirecheck' * (make -C lustre/utils newwiretest) - * running on Linux node7 2.6.32 #1 SMP Tue Dec 18 04:02:25 MSK 2012 x86_64 x86_64 x86_64 GNU - * with gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) */ + * running on Linux deva 2.6.32.279.lustre #5 SMP Tue Apr 9 22:52:17 CST 2013 x86_64 x86_64 x + * with gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) */ /* Constants... */ @@ -2825,14 +2825,14 @@ void lustre_assert_wire_constants(void) (long long)(int)offsetof(struct mdt_rec_reint, rr_flags)); LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_flags) == 4, "found %lld\n", (long long)(int)sizeof(((struct mdt_rec_reint *)0)->rr_flags)); - LASSERTF((int)offsetof(struct mdt_rec_reint, rr_padding_2) == 124, "found %lld\n", - (long long)(int)offsetof(struct mdt_rec_reint, rr_padding_2)); - LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_padding_2) == 4, "found %lld\n", - (long long)(int)sizeof(((struct mdt_rec_reint *)0)->rr_padding_2)); - LASSERTF((int)offsetof(struct mdt_rec_reint, rr_padding_3) == 128, "found %lld\n", - (long long)(int)offsetof(struct mdt_rec_reint, rr_padding_3)); - LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_padding_3) == 4, "found %lld\n", - (long long)(int)sizeof(((struct mdt_rec_reint *)0)->rr_padding_3)); + LASSERTF((int)offsetof(struct mdt_rec_reint, rr_flags_h) == 124, "found %lld\n", + (long long)(int)offsetof(struct mdt_rec_reint, rr_flags_h)); + LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_flags_h) == 4, "found %lld\n", + (long long)(int)sizeof(((struct mdt_rec_reint *)0)->rr_flags_h)); + LASSERTF((int)offsetof(struct mdt_rec_reint, rr_umask) == 128, "found %lld\n", + (long long)(int)offsetof(struct mdt_rec_reint, rr_umask)); + LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_umask) == 4, "found %lld\n", + (long long)(int)sizeof(((struct mdt_rec_reint *)0)->rr_umask)); LASSERTF((int)offsetof(struct mdt_rec_reint, rr_padding_4) == 132, "found %lld\n", (long long)(int)offsetof(struct mdt_rec_reint, rr_padding_4)); LASSERTF((int)sizeof(((struct mdt_rec_reint *)0)->rr_padding_4) == 4, "found %lld\n",