Whamcloud - gitweb
Branch b1_5
authornathan <nathan>
Tue, 9 May 2006 19:55:34 +0000 (19:55 +0000)
committernathan <nathan>
Tue, 9 May 2006 19:55:34 +0000 (19:55 +0000)
cleanup mgs_target_info (failnids are part of params, add lustre vers)
add wirecheck stuff for MGS

lustre/include/lustre/lustre_idl.h
lustre/include/lustre_disk.h
lustre/obdclass/obd_mount.c
lustre/ptlrpc/pack_generic.c
lustre/utils/wirecheck.c
lustre/utils/wirehdr.c
lustre/utils/wiretest.c

index 80d0ef1..78012f4 100644 (file)
@@ -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) */
index 1f38619..35aeca0 100644 (file)
@@ -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
 
index 99b7da2..09dc921 100644 (file)
@@ -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;
index 52ef4dc..712dd10 100644 (file)
@@ -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)
index d8ea96f..3eaf67c 100644 (file)
@@ -7,6 +7,7 @@
 #include <liblustre.h>
 #include <lustre_lib.h>
 #include <lustre/lustre_idl.h>
+#include <lustre_disk.h>
 
 #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");
 
index 95de9db..a0592d1 100644 (file)
@@ -2,6 +2,7 @@
 #include <liblustre.h>
 #include <lustre_lib.h>
 #include <lustre/lustre_idl.h>
+#include <lustre_disk.h>
 
 #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;
 }
 
index 4867401..d57d4d7 100644 (file)
@@ -2,6 +2,7 @@
 #include <liblustre.h>
 #include <lustre_lib.h>
 #include <lustre/lustre_idl.h>
+#include <lustre_disk.h>
 
 #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));
 }