From e23f39b4970aaf5a67dba989bd1abdef3f3b7bc3 Mon Sep 17 00:00:00 2001 From: nathan Date: Tue, 9 May 2006 19:55:34 +0000 Subject: [PATCH] Branch b1_5 cleanup mgs_target_info (failnids are part of params, add lustre vers) add wirecheck stuff for MGS --- lustre/include/lustre/lustre_idl.h | 21 +++--- lustre/include/lustre_disk.h | 4 -- lustre/obdclass/obd_mount.c | 1 + lustre/ptlrpc/pack_generic.c | 15 ++-- lustre/utils/wirecheck.c | 47 +++++++++++++ lustre/utils/wirehdr.c | 9 +-- lustre/utils/wiretest.c | 137 +++++++++++++++++++++++++++++++++---- 7 files changed, 191 insertions(+), 43 deletions(-) diff --git a/lustre/include/lustre/lustre_idl.h b/lustre/include/lustre/lustre_idl.h index 80d0ef1..78012f4 100644 --- a/lustre/include/lustre/lustre_idl.h +++ b/lustre/include/lustre/lustre_idl.h @@ -991,24 +991,19 @@ typedef enum { MGS_LAST_OPC } mgs_cmd_t; +/* We pass this info to the MGS so it can write config logs */ #define MTI_NAME_MAXLEN 64 -#define MTI_UUID_MAXLEN MTI_NAME_MAXLEN + 5 -/* each host can have multiple nids, and multiple failover hosts, and I don't - want to run out of room... */ -#define MTI_NIDS_MAX 64 /* match lustre_disk.h */ - +#define MTI_NIDS_MAX 32 struct mgs_target_info { + __u32 mti_lustre_ver; + __u32 mti_stripe_index; + __u32 mti_config_ver; + __u32 mti_flags; + __u32 mti_nid_count; char mti_fsname[MTI_NAME_MAXLEN]; char mti_svname[MTI_NAME_MAXLEN]; char mti_uuid[sizeof(struct obd_uuid)]; lnet_nid_t mti_nids[MTI_NIDS_MAX]; /* host nids */ - lnet_nid_t mti_failnids[MTI_NIDS_MAX]; /* partner nids */ - __u16 mti_failnodes[8]; /* last nid index of each partner */ - __u32 mti_stripe_index; - __u32 mti_nid_count; - __u32 mti_failnid_count; - __u32 mti_config_ver; - __u32 mti_flags; char mti_params[2048]; }; @@ -1297,7 +1292,7 @@ extern void lustre_swab_llog_rec(struct llog_rec_hdr *rec, struct lustre_cfg; extern void lustre_swab_lustre_cfg(struct lustre_cfg *lcfg); -/* qutoa */ +/* quota */ struct qunit_data { __u32 qd_id; /* ID appiles to (uid, gid) */ __u32 qd_type; /* Quota type (USRQUOTA, GRPQUOTA) */ diff --git a/lustre/include/lustre_disk.h b/lustre/include/lustre_disk.h index 1f38619..35aeca0 100644 --- a/lustre/include/lustre_disk.h +++ b/lustre/include/lustre_disk.h @@ -72,10 +72,6 @@ static inline char *mt_str(enum ldd_mount_type mt) return mount_type_string[mt]; } -#ifndef MTI_NIDS_MAX /* match lustre_idl.h */ -#define MTI_NIDS_MAX 64 -#endif - #define LDD_INCOMPAT_SUPP 0 #define LDD_ROCOMPAT_SUPP 0 diff --git a/lustre/obdclass/obd_mount.c b/lustre/obdclass/obd_mount.c index 99b7da2..09dc921 100644 --- a/lustre/obdclass/obd_mount.c +++ b/lustre/obdclass/obd_mount.c @@ -925,6 +925,7 @@ static int server_sb2mti(struct super_block *sb, struct mgs_target_info *mti) } } + mti->mti_lustre_ver = LUSTRE_VERSION_CODE; mti->mti_config_ver = 0; mti->mti_flags = ldd->ldd_flags; mti->mti_stripe_index = ldd->ldd_svindex; diff --git a/lustre/ptlrpc/pack_generic.c b/lustre/ptlrpc/pack_generic.c index 52ef4dc..712dd10 100644 --- a/lustre/ptlrpc/pack_generic.c +++ b/lustre/ptlrpc/pack_generic.c @@ -631,19 +631,14 @@ void lustre_swab_mds_body (struct mds_body *b) void lustre_swab_mgs_target_info(struct mgs_target_info *mti) { int i; - LASSERT(sizeof(lnet_nid_t) == sizeof(__u64)); - for (i = 0; i < MTI_NIDS_MAX; i++) { - __swab64s(&mti->mti_nids[i]); - __swab64s(&mti->mti_failnids[i]); - } - for (i = 0; i < 8; i++) { - __swab16s(&mti->mti_failnodes[i]); - } + __swab32s(&mti->mti_lustre_ver); __swab32s(&mti->mti_stripe_index); - __swab32s(&mti->mti_nid_count); - __swab32s(&mti->mti_failnid_count); __swab32s(&mti->mti_config_ver); __swab32s(&mti->mti_flags); + __swab32s(&mti->mti_nid_count); + LASSERT(sizeof(lnet_nid_t) == sizeof(__u64)); + for (i = 0; i < MTI_NIDS_MAX; i++) + __swab64s(&mti->mti_nids[i]); } static void lustre_swab_obd_dqinfo (struct obd_dqinfo *i) diff --git a/lustre/utils/wirecheck.c b/lustre/utils/wirecheck.c index d8ea96f..3eaf67c 100644 --- a/lustre/utils/wirecheck.c +++ b/lustre/utils/wirecheck.c @@ -7,6 +7,7 @@ #include #include #include +#include #define BLANK_LINE() \ do { \ @@ -847,6 +848,43 @@ check_qunit_data(void) } static void +check_mgs_target_info(void) +{ + BLANK_LINE(); + CHECK_STRUCT(mgs_target_info); + CHECK_MEMBER(mgs_target_info, mti_lustre_ver); + CHECK_MEMBER(mgs_target_info, mti_stripe_index); + CHECK_MEMBER(mgs_target_info, mti_config_ver); + CHECK_MEMBER(mgs_target_info, mti_flags); + CHECK_MEMBER(mgs_target_info, mti_nid_count); + CHECK_MEMBER(mgs_target_info, mti_fsname); + CHECK_MEMBER(mgs_target_info, mti_svname); + CHECK_MEMBER(mgs_target_info, mti_uuid); + CHECK_MEMBER(mgs_target_info, mti_nids); + CHECK_MEMBER(mgs_target_info, mti_params); +} + +static void +check_lustre_disk_data(void) +{ + BLANK_LINE(); + CHECK_STRUCT(lustre_disk_data); + CHECK_MEMBER(lustre_disk_data, ldd_magic); + CHECK_MEMBER(lustre_disk_data, ldd_feature_compat); + CHECK_MEMBER(lustre_disk_data, ldd_feature_rocompat); + CHECK_MEMBER(lustre_disk_data, ldd_feature_incompat); + CHECK_MEMBER(lustre_disk_data, ldd_config_ver); + CHECK_MEMBER(lustre_disk_data, ldd_flags); + CHECK_MEMBER(lustre_disk_data, ldd_svindex); + CHECK_MEMBER(lustre_disk_data, ldd_mount_type); + CHECK_MEMBER(lustre_disk_data, ldd_fsname); + CHECK_MEMBER(lustre_disk_data, ldd_svname); + CHECK_MEMBER(lustre_disk_data, ldd_uuid); + CHECK_MEMBER(lustre_disk_data, ldd_mount_opts); + CHECK_MEMBER(lustre_disk_data, ldd_params); +} + +static void system_string (char *cmdline, char *str, int len) { int fds[2]; @@ -1026,6 +1064,12 @@ main(int argc, char **argv) CHECK_VALUE(QUOTA_DQACQ); CHECK_VALUE(QUOTA_DQREL); + CHECK_VALUE(MGS_CONNECT); + CHECK_VALUE(MGS_DISCONNECT); + CHECK_VALUE(MGS_EXCEPTION); + CHECK_VALUE(MGS_TARGET_REG); + CHECK_VALUE(MGS_TARGET_DEL); + CHECK_CDEFINE(OBD_CONNECT_RDONLY); CHECK_CDEFINE(OBD_CONNECT_INDEX); CHECK_CDEFINE(OBD_CONNECT_GRANT); @@ -1093,6 +1137,9 @@ main(int argc, char **argv) check_llog_array_rec(); check_mds_extent_desc(); check_qunit_data(); + check_mgs_target_info(); + check_lustre_disk_data(); + printf("}\n\n"); diff --git a/lustre/utils/wirehdr.c b/lustre/utils/wirehdr.c index 95de9db..a0592d1 100644 --- a/lustre/utils/wirehdr.c +++ b/lustre/utils/wirehdr.c @@ -2,6 +2,7 @@ #include #include #include +#include #undef LASSERT #undef LASSERTF @@ -15,11 +16,11 @@ void lustre_assert_wire_constants(void); int main() { - lustre_assert_wire_constants(); + lustre_assert_wire_constants(); - if (ret == 0) - printf("wire constants OK\n"); + if (ret == 0) + printf("wire constants OK\n"); - return ret; + return ret; } diff --git a/lustre/utils/wiretest.c b/lustre/utils/wiretest.c index 4867401..d57d4d7 100644 --- a/lustre/utils/wiretest.c +++ b/lustre/utils/wiretest.c @@ -2,6 +2,7 @@ #include #include #include +#include #undef LASSERT #undef LASSERTF @@ -26,8 +27,8 @@ int main() void lustre_assert_wire_constants(void) { /* Wire protocol assertions generated by 'wirecheck' - * running on Linux vmbuild 2.6.9-build #8 Sun Dec 18 16:30:50 MST 2005 i686 i686 i386 GNU/Li - * with gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3) */ + * running on Linux pancake.rutmans.org 2.6.8-1.521 #1 Mon Aug 16 09:01:18 EDT 2004 i686 i686 + * with gcc version 3.3.3 20040412 (Red Hat Linux 3.3.3-7) */ /* Constants... */ @@ -143,6 +144,16 @@ void lustre_assert_wire_constants(void) (long long)REINT_OPEN); LASSERTF(REINT_MAX == 7, " found %lld\n", (long long)REINT_MAX); + LASSERTF(MGS_CONNECT == 250, " found %lld\n", + (long long)MGS_CONNECT); + LASSERTF(MGS_DISCONNECT == 251, " found %lld\n", + (long long)MGS_DISCONNECT); + LASSERTF(MGS_EXCEPTION == 252, " found %lld\n", + (long long)MGS_EXCEPTION); + LASSERTF(MGS_TARGET_REG == 253, " found %lld\n", + (long long)MGS_TARGET_REG); + LASSERTF(MGS_TARGET_DEL == 254, " found %lld\n", + (long long)MGS_TARGET_DEL); LASSERTF(DISP_IT_EXECD == 1, " found %lld\n", (long long)DISP_IT_EXECD); LASSERTF(DISP_LOOKUP_EXECD == 2, " found %lld\n", @@ -159,16 +170,6 @@ void lustre_assert_wire_constants(void) (long long)MDS_STATUS_CONN); LASSERTF(MDS_STATUS_LOV == 2, " found %lld\n", (long long)MDS_STATUS_LOV); - LASSERTF(MGS_CONNECT == 250, " found %lld\n", - (long long)MGS_CONNECT); - LASSERTF(MGS_DISCONNECT == 251, " found %lld\n", - (long long)MGS_DISCONNECT); - LASSERTF(MGS_EXCEPTION == 252, " found %lld\n", - (long long)MGS_EXCEPTION); - LASSERTF(MGS_TARGET_REG == 253, " found %lld\n", - (long long)MGS_TARGET_REG); - LASSERTF(MGS_TARGET_DEL == 254, " found %lld\n", - (long long)MGS_TARGET_DEL); LASSERTF(LDLM_ENQUEUE == 101, " found %lld\n", (long long)LDLM_ENQUEUE); LASSERTF(LDLM_CONVERT == 102, " found %lld\n", @@ -215,6 +216,16 @@ void lustre_assert_wire_constants(void) (long long)QUOTA_DQACQ); LASSERTF(QUOTA_DQREL == 602, " found %lld\n", (long long)QUOTA_DQREL); + LASSERTF(MGS_CONNECT == 250, " found %lld\n", + (long long)MGS_CONNECT); + LASSERTF(MGS_DISCONNECT == 251, " found %lld\n", + (long long)MGS_DISCONNECT); + LASSERTF(MGS_EXCEPTION == 252, " found %lld\n", + (long long)MGS_EXCEPTION); + LASSERTF(MGS_TARGET_REG == 253, " found %lld\n", + (long long)MGS_TARGET_REG); + LASSERTF(MGS_TARGET_DEL == 254, " found %lld\n", + (long long)MGS_TARGET_DEL); CLASSERT(OBD_CONNECT_RDONLY == 0x1ULL); CLASSERT(OBD_CONNECT_INDEX == 0x2ULL); CLASSERT(OBD_CONNECT_GRANT == 0x8ULL); @@ -228,6 +239,8 @@ void lustre_assert_wire_constants(void) CLASSERT(OBD_CONNECT_TRANSNO == 0x800ULL); CLASSERT(OBD_CONNECT_IBITS == 0x1000ULL); CLASSERT(OBD_CONNECT_JOIN == 0x2000ULL); + CLASSERT(OBD_CONNECT_ATTRFID == 0x4000ULL); + CLASSERT(OBD_CONNECT_NODEVOH == 0x8000ULL); /* Sizes and Offsets */ @@ -1805,5 +1818,105 @@ void lustre_assert_wire_constants(void) (long long)(int)offsetof(struct qunit_data, qd_isblk)); LASSERTF((int)sizeof(((struct qunit_data *)0)->qd_isblk) == 4, " found %lld\n", (long long)(int)sizeof(((struct qunit_data *)0)->qd_isblk)); + + /* Checks for struct mgs_target_info */ + LASSERTF((int)sizeof(struct mgs_target_info) == 2492, " found %lld\n", + (long long)(int)sizeof(struct mgs_target_info)); + LASSERTF((int)offsetof(struct mgs_target_info, mti_lustre_ver) == 0, " found %lld\n", + (long long)(int)offsetof(struct mgs_target_info, mti_lustre_ver)); + LASSERTF((int)sizeof(((struct mgs_target_info *)0)->mti_lustre_ver) == 4, " found %lld\n", + (long long)(int)sizeof(((struct mgs_target_info *)0)->mti_lustre_ver)); + LASSERTF((int)offsetof(struct mgs_target_info, mti_stripe_index) == 4, " found %lld\n", + (long long)(int)offsetof(struct mgs_target_info, mti_stripe_index)); + LASSERTF((int)sizeof(((struct mgs_target_info *)0)->mti_stripe_index) == 4, " found %lld\n", + (long long)(int)sizeof(((struct mgs_target_info *)0)->mti_stripe_index)); + LASSERTF((int)offsetof(struct mgs_target_info, mti_config_ver) == 8, " found %lld\n", + (long long)(int)offsetof(struct mgs_target_info, mti_config_ver)); + LASSERTF((int)sizeof(((struct mgs_target_info *)0)->mti_config_ver) == 4, " found %lld\n", + (long long)(int)sizeof(((struct mgs_target_info *)0)->mti_config_ver)); + LASSERTF((int)offsetof(struct mgs_target_info, mti_flags) == 12, " found %lld\n", + (long long)(int)offsetof(struct mgs_target_info, mti_flags)); + LASSERTF((int)sizeof(((struct mgs_target_info *)0)->mti_flags) == 4, " found %lld\n", + (long long)(int)sizeof(((struct mgs_target_info *)0)->mti_flags)); + LASSERTF((int)offsetof(struct mgs_target_info, mti_nid_count) == 16, " found %lld\n", + (long long)(int)offsetof(struct mgs_target_info, mti_nid_count)); + LASSERTF((int)sizeof(((struct mgs_target_info *)0)->mti_nid_count) == 4, " found %lld\n", + (long long)(int)sizeof(((struct mgs_target_info *)0)->mti_nid_count)); + LASSERTF((int)offsetof(struct mgs_target_info, mti_fsname) == 20, " found %lld\n", + (long long)(int)offsetof(struct mgs_target_info, mti_fsname)); + LASSERTF((int)sizeof(((struct mgs_target_info *)0)->mti_fsname) == 64, " found %lld\n", + (long long)(int)sizeof(((struct mgs_target_info *)0)->mti_fsname)); + LASSERTF((int)offsetof(struct mgs_target_info, mti_svname) == 84, " found %lld\n", + (long long)(int)offsetof(struct mgs_target_info, mti_svname)); + LASSERTF((int)sizeof(((struct mgs_target_info *)0)->mti_svname) == 64, " found %lld\n", + (long long)(int)sizeof(((struct mgs_target_info *)0)->mti_svname)); + LASSERTF((int)offsetof(struct mgs_target_info, mti_uuid) == 148, " found %lld\n", + (long long)(int)offsetof(struct mgs_target_info, mti_uuid)); + LASSERTF((int)sizeof(((struct mgs_target_info *)0)->mti_uuid) == 40, " found %lld\n", + (long long)(int)sizeof(((struct mgs_target_info *)0)->mti_uuid)); + LASSERTF((int)offsetof(struct mgs_target_info, mti_nids) == 188, " found %lld\n", + (long long)(int)offsetof(struct mgs_target_info, mti_nids)); + LASSERTF((int)sizeof(((struct mgs_target_info *)0)->mti_nids) == 256, " found %lld\n", + (long long)(int)sizeof(((struct mgs_target_info *)0)->mti_nids)); + LASSERTF((int)offsetof(struct mgs_target_info, mti_params) == 444, " found %lld\n", + (long long)(int)offsetof(struct mgs_target_info, mti_params)); + LASSERTF((int)sizeof(((struct mgs_target_info *)0)->mti_params) == 2048, " found %lld\n", + (long long)(int)sizeof(((struct mgs_target_info *)0)->mti_params)); + + /* Checks for struct lustre_disk_data */ + LASSERTF((int)sizeof(struct lustre_disk_data) == 12288, " found %lld\n", + (long long)(int)sizeof(struct lustre_disk_data)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_magic) == 0, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_magic)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_magic) == 4, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_magic)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_feature_compat) == 4, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_feature_compat)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_feature_compat) == 4, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_feature_compat)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_feature_rocompat) == 8, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_feature_rocompat)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_feature_rocompat) == 4, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_feature_rocompat)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_feature_incompat) == 12, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_feature_incompat)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_feature_incompat) == 4, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_feature_incompat)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_config_ver) == 16, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_config_ver)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_config_ver) == 4, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_config_ver)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_flags) == 20, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_flags)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_flags) == 4, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_flags)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_svindex) == 24, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_svindex)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_svindex) == 4, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_svindex)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_mount_type) == 28, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_mount_type)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_mount_type) == 4, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_mount_type)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_fsname) == 32, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_fsname)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_fsname) == 64, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_fsname)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_svname) == 96, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_svname)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_svname) == 64, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_svname)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_uuid) == 160, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_uuid)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_uuid) == 40, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_uuid)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_mount_opts) == 4096, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_mount_opts)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_mount_opts) == 4096, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_mount_opts)); + LASSERTF((int)offsetof(struct lustre_disk_data, ldd_params) == 8192, " found %lld\n", + (long long)(int)offsetof(struct lustre_disk_data, ldd_params)); + LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_params) == 4096, " found %lld\n", + (long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_params)); } -- 1.8.3.1