Whamcloud - gitweb
Fix OST AMD - mark new OST active when it is added.
[fs/lustre-release.git] / lustre / utils / wirecheck.c
index 18810ae..254c96e 100644 (file)
@@ -2,6 +2,8 @@
  * vim:expandtab:shiftwidth=8:tabstop=8:
  */
 #include <stdio.h>
+#include <sys/types.h>
+#include <sys/wait.h>
 #include <liblustre.h>
 #include <linux/lustre_lib.h>
 #include <linux/lustre_idl.h>
@@ -20,17 +22,21 @@ do {                                                            \
 
 #define CHECK_DEFINE(a)                                         \
 do {                                                            \
-        printf("        LASSERT("#a" == "STRINGIFY(a)");\n");   \
+        printf("        LASSERTF("#a" == "STRINGIFY(a)          \
+               ",\" found %%lld\\n\",\n                 "       \
+               "(long long)"#a");\n");   \
 } while(0)
 
 #define CHECK_VALUE(a)                                          \
 do {                                                            \
-        printf("        LASSERT("#a" == %d);\n", a);            \
+        printf("        LASSERTF("#a                            \
+               " == %d, \" found %%lld\\n\",\n                 "\
+               "(long long)"#a");\n",a);\
 } while(0)
 
 #define CHECK_MEMBER_OFFSET(s,m)                                \
 do {                                                            \
-        CHECK_VALUE(offsetof(struct s, m));                     \
+        CHECK_VALUE((int)offsetof(struct s, m));                \
 } while(0)
 
 #define CHECK_MEMBER_SIZEOF(s,m)                                \
@@ -99,7 +105,7 @@ check_obdo(void)
         CHECK_MEMBER(obdo, o_ctime);
         CHECK_MEMBER(obdo, o_size);
         CHECK_MEMBER(obdo, o_blocks);
-        CHECK_MEMBER(obdo, o_rdev);
+        CHECK_MEMBER(obdo, o_grant);
         CHECK_MEMBER(obdo, o_blksize);
         CHECK_MEMBER(obdo, o_mode);
         CHECK_MEMBER(obdo, o_uid);
@@ -108,7 +114,7 @@ check_obdo(void)
         CHECK_MEMBER(obdo, o_nlink);
         CHECK_MEMBER(obdo, o_generation);
         CHECK_MEMBER(obdo, o_valid);
-        CHECK_MEMBER(obdo, o_obdflags);
+        CHECK_MEMBER(obdo, o_misc);
         CHECK_MEMBER(obdo, o_easize);
         CHECK_MEMBER(obdo, o_inline);
 
@@ -124,7 +130,6 @@ check_obdo(void)
         CHECK_VALUE(OBD_MD_FLUID);
         CHECK_VALUE(OBD_MD_FLGID);
         CHECK_VALUE(OBD_MD_FLFLAGS);
-        CHECK_VALUE(OBD_MD_FLOBDFLG);
         CHECK_VALUE(OBD_MD_FLNLINK);
         CHECK_VALUE(OBD_MD_FLGENER);
         CHECK_VALUE(OBD_MD_FLINLINE);
@@ -143,6 +148,7 @@ check_obdo(void)
         CHECK_VALUE(OBD_FL_DELORPHAN);
         CHECK_VALUE(OBD_FL_NORPC);
         CHECK_VALUE(OBD_FL_IDONLY);
+        CHECK_VALUE(OBD_FL_RECREATE_OBJS);
 }
 
 void
@@ -210,7 +216,6 @@ check_niobuf_remote(void)
 
         CHECK_VALUE(OBD_BRW_READ);
         CHECK_VALUE(OBD_BRW_WRITE);
-        CHECK_VALUE(OBD_BRW_CREATE);
         CHECK_VALUE(OBD_BRW_SYNC);
         CHECK_VALUE(OBD_BRW_FROM_GRANT);
 }
@@ -401,6 +406,7 @@ check_ldlm_extent(void)
         CHECK_STRUCT(ldlm_extent);
         CHECK_MEMBER(ldlm_extent, start);
         CHECK_MEMBER(ldlm_extent, end);
+        CHECK_MEMBER(ldlm_extent, gid);
 }
 
 void
@@ -410,9 +416,9 @@ check_ldlm_flock(void)
         CHECK_STRUCT(ldlm_flock);
         CHECK_MEMBER(ldlm_flock, start);
         CHECK_MEMBER(ldlm_flock, end);
-        CHECK_MEMBER(ldlm_flock, blocking_export);
-        CHECK_MEMBER(ldlm_flock, blocking_pid);
         CHECK_MEMBER(ldlm_flock, pid);
+        CHECK_MEMBER(ldlm_flock, blocking_pid);
+        CHECK_MEMBER(ldlm_flock, blocking_export);
 }
 
 void
@@ -430,7 +436,6 @@ check_ldlm_resource_desc(void)
         CHECK_STRUCT(ldlm_resource_desc);
         CHECK_MEMBER(ldlm_resource_desc, lr_type);
         CHECK_MEMBER(ldlm_resource_desc, lr_name);
-        CHECK_MEMBER(ldlm_resource_desc, lr_version[RES_VERSION_SIZE]);
 }
 
 void
@@ -442,7 +447,6 @@ check_ldlm_lock_desc(void)
         CHECK_MEMBER(ldlm_lock_desc, l_req_mode);
         CHECK_MEMBER(ldlm_lock_desc, l_granted_mode);
         CHECK_MEMBER(ldlm_lock_desc, l_policy_data);
-        CHECK_MEMBER(ldlm_lock_desc, l_version[RES_VERSION_SIZE]);
 }
 
 void
@@ -462,15 +466,25 @@ check_ldlm_reply(void)
         BLANK_LINE();
         CHECK_STRUCT(ldlm_reply);
         CHECK_MEMBER(ldlm_reply, lock_flags);
-        CHECK_MEMBER(ldlm_reply, lock_mode);
-        CHECK_MEMBER(ldlm_reply, lock_resource_name);
+        CHECK_MEMBER(ldlm_request, lock_desc);
         CHECK_MEMBER(ldlm_reply, lock_handle);
-        CHECK_MEMBER(ldlm_reply, lock_policy_data);
         CHECK_MEMBER(ldlm_reply, lock_policy_res1);
         CHECK_MEMBER(ldlm_reply, lock_policy_res2);
 }
 
 void
+check_ldlm_lvb(void)
+{
+        BLANK_LINE();
+        CHECK_STRUCT(ost_lvb);
+        CHECK_MEMBER(ost_lvb, lvb_size);
+        CHECK_MEMBER(ost_lvb, lvb_mtime);
+        CHECK_MEMBER(ost_lvb, lvb_atime);
+        CHECK_MEMBER(ost_lvb, lvb_ctime);
+        CHECK_MEMBER(ost_lvb, lvb_blocks);
+}
+
+void
 check_ptlbd_op(void)
 {
         BLANK_LINE();
@@ -522,6 +536,14 @@ check_llog_logid(void)
 }
 
 void
+check_llog_catid(void)
+{
+        BLANK_LINE();
+        CHECK_STRUCT(llog_catid);
+        CHECK_MEMBER(llog_catid, lci_logid);
+}
+
+void
 check_llog_rec_hdr(void)
 {
         BLANK_LINE();
@@ -626,7 +648,6 @@ check_llog_log_hdr(void)
         CHECK_MEMBER(llog_log_hdr, llh_flags);
         CHECK_MEMBER(llog_log_hdr, llh_cat_idx);
         CHECK_MEMBER(llog_log_hdr, llh_tgtuuid);
-        CHECK_MEMBER(llog_log_hdr, llh_reserved);
         CHECK_MEMBER(llog_log_hdr, llh_bitmap);
         CHECK_MEMBER(llog_log_hdr, llh_tail);
 }
@@ -654,7 +675,7 @@ check_llogd_body(void)
         CHECK_MEMBER(llogd_body, lgd_len);
         CHECK_MEMBER(llogd_body, lgd_cur_offset);
 
-        CHECK_VALUE(LLOG_ORIGIN_HANDLE_CREATE);
+        CHECK_VALUE(LLOG_ORIGIN_HANDLE_OPEN);
         CHECK_VALUE(LLOG_ORIGIN_HANDLE_NEXT_BLOCK);
         CHECK_VALUE(LLOG_ORIGIN_HANDLE_READ_HEADER);
         CHECK_VALUE(LLOG_ORIGIN_HANDLE_WRITE_REC);
@@ -673,14 +694,74 @@ check_llogd_conn_body(void)
         CHECK_MEMBER(llogd_conn_body, lgdc_ctxt_idx);
 }
 
+void
+system_string (char *cmdline, char *str, int len)
+{
+        int   fds[2];
+        int   rc;
+        pid_t pid;
+
+        rc = pipe(fds);
+        if (rc != 0)
+                abort();
+
+        pid = fork();
+        if (pid == 0) {
+                /* child */
+                int   fd = fileno(stdout);
+
+                rc = dup2(fds[1], fd);
+                if (rc != fd)
+                        abort();
+
+                exit(system(cmdline));
+                /* notreached */
+        } else if ((int)pid < 0) {
+                abort();
+        } else {
+                FILE *f = fdopen(fds[0], "r");
+
+                if (f == NULL)
+                        abort();
+
+                close(fds[1]);
+
+                if (fgets(str, len, f) == NULL)
+                        abort();
+
+                if (waitpid(pid, &rc, 0) != pid)
+                        abort();
+
+                if (!WIFEXITED(rc) || WEXITSTATUS(rc) != 0)
+                        abort();
+
+                if (strnlen(str, len) == len)
+                        str[len - 1] = 0;
+
+                if (str[strlen(str) - 1] == '\n')
+                        str[strlen(str) - 1] = 0;
+
+                fclose(f);
+        }
+}
+
 int
 main(int argc, char **argv)
 {
-        printf("void lustre_assert_wire_constants(void)\n"
-               "{\n");
+        char unameinfo[80];
+        char gccinfo[80];
 
-        COMMENT("Wire protocol assertions generated by 'wirecheck'");
-        BLANK_LINE();
+        system_string("uname -a", unameinfo, sizeof(unameinfo));
+        system_string("gcc -v 2>&1 | tail -1", gccinfo, sizeof(gccinfo));
+
+        printf ("void lustre_assert_wire_constants(void)\n"
+                "{\n"
+                "        /* Wire protocol assertions generated by 'wirecheck'\n"
+                "         * running on %s\n"
+                "         * with %s */\n"
+                "\n", unameinfo, gccinfo);
+
+        BLANK_LINE ();
 
         COMMENT("Constants...");
         CHECK_DEFINE(PTLRPC_MSG_MAGIC);
@@ -692,6 +773,7 @@ main(int argc, char **argv)
 
         CHECK_VALUE(MSG_LAST_REPLAY);
         CHECK_VALUE(MSG_RESENT);
+        CHECK_VALUE(MSG_REPLAY);
 
         CHECK_VALUE(MSG_CONNECT_RECOVERING);
         CHECK_VALUE(MSG_CONNECT_RECONNECT);
@@ -812,12 +894,21 @@ main(int argc, char **argv)
         check_ldlm_lock_desc();
         check_ldlm_request();
         check_ldlm_reply();
+        check_ldlm_lvb();
         check_ptlbd_op();
         check_ptlbd_niob();
         check_ptlbd_rsp();
         check_llog_logid();
+        check_llog_catid();
         check_llog_rec_hdr();
         check_llog_rec_tail();
+        check_llog_logid_rec();
+        check_llog_create_rec();
+        check_llog_orphan_rec();
+        check_llog_unlink_rec();
+        check_llog_size_change_rec();
+        check_llog_gen();
+        check_llog_gen_rec();
         check_llog_log_hdr();
         check_llog_cookie();
         check_llogd_body();