#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
-#include <lustre/lustre_idl.h>
-#include <lustre/lustre_lfsck_user.h>
-#include <linux/lustre_disk.h>
+#include <linux/lustre/lustre_idl.h>
+#include <linux/lustre/lustre_lfsck_user.h>
+#include <linux/lustre/lustre_disk.h>
#define BLANK_LINE() \
do { \
CHECK_MEMBER(lustre_mdt_attrs, lma_compat);
CHECK_MEMBER(lustre_mdt_attrs, lma_incompat);
CHECK_MEMBER(lustre_mdt_attrs, lma_self_fid);
+
+ CHECK_VALUE_X(LMAC_HSM);
+ CHECK_VALUE_X(LMAC_NOT_IN_OI);
+ CHECK_VALUE_X(LMAC_FID_ON_OST);
+ CHECK_VALUE_X(LMAC_STRIPE_INFO);
+ CHECK_VALUE_X(LMAC_COMP_INFO);
+
CHECK_VALUE_X(LMAI_RELEASED);
CHECK_VALUE_X(LMAI_AGENT);
CHECK_VALUE_X(LMAI_REMOTE_PARENT);
CHECK_VALUE_X(LMAI_STRIPED);
CHECK_VALUE_X(LMAI_ORPHAN);
+}
- CHECK_VALUE_X(LMAC_HSM);
- CHECK_VALUE_X(LMAC_NOT_IN_OI);
- CHECK_VALUE_X(LMAC_FID_ON_OST);
+static void
+check_lustre_ost_attrs(void)
+{
+ BLANK_LINE();
+ CHECK_STRUCT(lustre_ost_attrs);
+ CHECK_MEMBER(lustre_ost_attrs, loa_lma);
+ CHECK_MEMBER(lustre_ost_attrs, loa_parent_fid);
+ CHECK_MEMBER(lustre_ost_attrs, loa_stripe_size);
+ CHECK_MEMBER(lustre_ost_attrs, loa_comp_id);
+ CHECK_MEMBER(lustre_ost_attrs, loa_comp_start);
+ CHECK_MEMBER(lustre_ost_attrs, loa_comp_end);
}
static void
CHECK_VALUE(MSGHDR_AT_SUPPORT);
CHECK_VALUE(MSGHDR_CKSUM_INCOMPAT18);
- CHECK_VALUE_X(MSG_OP_FLAG_MASK);
- CHECK_VALUE(MSG_OP_FLAG_SHIFT);
- CHECK_VALUE_X(MSG_GEN_FLAG_MASK);
-
- CHECK_VALUE_X(MSG_LAST_REPLAY);
CHECK_VALUE_X(MSG_RESENT);
CHECK_VALUE_X(MSG_REPLAY);
- CHECK_VALUE_X(MSG_DELAY_REPLAY);
- CHECK_VALUE_X(MSG_VERSION_REPLAY);
CHECK_VALUE_X(MSG_REQ_REPLAY_DONE);
CHECK_VALUE_X(MSG_LOCK_REPLAY_DONE);
CHECK_VALUE_X(MSG_CONNECT_REPLAYABLE);
CHECK_VALUE_X(MSG_CONNECT_LIBCLIENT);
CHECK_VALUE_X(MSG_CONNECT_INITIAL);
- CHECK_VALUE_X(MSG_CONNECT_ASYNC);
CHECK_VALUE_X(MSG_CONNECT_NEXT_VER);
CHECK_VALUE_X(MSG_CONNECT_TRANSNO);
}
CHECK_DEFINE_64X(OBD_CONNECT_REQPORTAL);
CHECK_DEFINE_64X(OBD_CONNECT_ACL);
CHECK_DEFINE_64X(OBD_CONNECT_XATTR);
- CHECK_DEFINE_64X(OBD_CONNECT_CROW);
+ CHECK_DEFINE_64X(OBD_CONNECT_LARGE_ACL);
CHECK_DEFINE_64X(OBD_CONNECT_TRUNCLOCK);
CHECK_DEFINE_64X(OBD_CONNECT_TRANSNO);
CHECK_DEFINE_64X(OBD_CONNECT_IBITS);
CHECK_DEFINE_64X(OBD_CONNECT_MULTIMODRPCS);
CHECK_DEFINE_64X(OBD_CONNECT_DIR_STRIPE);
CHECK_DEFINE_64X(OBD_CONNECT_SUBTREE);
- CHECK_DEFINE_64X(OBD_CONNECT_LOCK_AHEAD);
+ CHECK_DEFINE_64X(OBD_CONNECT_LOCKAHEAD_OLD);
CHECK_DEFINE_64X(OBD_CONNECT_BULK_MBITS);
CHECK_DEFINE_64X(OBD_CONNECT_OBDOPACK);
CHECK_DEFINE_64X(OBD_CONNECT_FLAGS2);
CHECK_DEFINE_64X(OBD_CONNECT2_FILE_SECCTX);
+ CHECK_DEFINE_64X(OBD_CONNECT2_LOCKAHEAD);
CHECK_VALUE_X(OBD_CKSUM_CRC32);
CHECK_VALUE_X(OBD_CKSUM_ADLER);
}
static void
+check_ost_layout(void)
+{
+ BLANK_LINE();
+ CHECK_STRUCT(ost_layout);
+ CHECK_MEMBER(ost_layout, ol_stripe_size);
+ CHECK_MEMBER(ost_layout, ol_stripe_count);
+ CHECK_MEMBER(ost_layout, ol_comp_start);
+ CHECK_MEMBER(ost_layout, ol_comp_end);
+ CHECK_MEMBER(ost_layout, ol_comp_id);
+}
+
+static void
check_obdo(void)
{
BLANK_LINE();
CHECK_MEMBER(obdo, o_stripe_idx);
CHECK_MEMBER(obdo, o_parent_ver);
CHECK_MEMBER(obdo, o_handle);
- CHECK_MEMBER(obdo, o_lcookie);
+ CHECK_MEMBER(obdo, o_layout);
+ CHECK_MEMBER(obdo, o_layout_version);
CHECK_MEMBER(obdo, o_uid_h);
CHECK_MEMBER(obdo, o_gid_h);
CHECK_MEMBER(obdo, o_data_version);
+ CHECK_MEMBER(obdo, o_projid);
CHECK_MEMBER(obdo, o_padding_4);
CHECK_MEMBER(obdo, o_padding_5);
CHECK_MEMBER(obdo, o_padding_6);
CHECK_DEFINE_64X(OBD_MD_FLCROSSREF);
CHECK_DEFINE_64X(OBD_MD_FLGETATTRLOCK);
CHECK_DEFINE_64X(OBD_MD_FLDATAVERSION);
+ CHECK_DEFINE_64X(OBD_MD_CLOSE_INTENT_EXECED);
+ CHECK_DEFINE_64X(OBD_MD_DEFAULT_MEA);
+ CHECK_DEFINE_64X(OBD_MD_FLOSTLAYOUT);
+ CHECK_DEFINE_64X(OBD_MD_FLPROJID);
CHECK_CVALUE_X(OBD_FL_INLINEDATA);
CHECK_CVALUE_X(OBD_FL_OBDMDEXISTS);
CHECK_CVALUE_X(OBD_FL_NOSPC_BLK);
CHECK_CVALUE_X(OBD_FL_FLUSH);
CHECK_CVALUE_X(OBD_FL_SHORT_IO);
- CHECK_CVALUE_X(OBD_FL_LOCAL_MASK);
}
static void
CHECK_VALUE_X(LOV_PATTERN_RAID0);
CHECK_VALUE_X(LOV_PATTERN_RAID1);
- CHECK_VALUE_X(LOV_PATTERN_FIRST);
+ CHECK_VALUE_X(LOV_PATTERN_MDT);
CHECK_VALUE_X(LOV_PATTERN_CMOBD);
}
CHECK_MEMBER(lov_comp_md_entry_v1, lcme_padding);
CHECK_VALUE_X(LCME_FL_INIT);
+ CHECK_VALUE_X(LCME_FL_NEG);
}
static void
CHECK_MEMBER(lov_comp_md_v1, lcm_layout_gen);
CHECK_MEMBER(lov_comp_md_v1, lcm_flags);
CHECK_MEMBER(lov_comp_md_v1, lcm_entry_count);
+ CHECK_MEMBER(lov_comp_md_v1, lcm_mirror_count);
CHECK_MEMBER(lov_comp_md_v1, lcm_padding1);
CHECK_MEMBER(lov_comp_md_v1, lcm_padding2);
CHECK_MEMBER(lov_comp_md_v1, lcm_entries[0]);
CHECK_CDEFINE(LOV_MAGIC_COMP_V1);
+
+ CHECK_VALUE(LCM_FL_NOT_FLR);
+ CHECK_VALUE(LCM_FL_RDONLY);
+ CHECK_VALUE(LCM_FL_WRITE_PENDING);
+ CHECK_VALUE(LCM_FL_SYNC_PENDING);
}
static void
CHECK_MEMBER(mdt_body, mbo_unused3);
CHECK_MEMBER(mdt_body, mbo_uid_h);
CHECK_MEMBER(mdt_body, mbo_gid_h);
- CHECK_MEMBER(mdt_body, mbo_padding_5);
- CHECK_MEMBER(mdt_body, mbo_padding_6);
- CHECK_MEMBER(mdt_body, mbo_padding_7);
+ CHECK_MEMBER(mdt_body, mbo_projid);
+ CHECK_MEMBER(mdt_body, mbo_dom_size);
+ CHECK_MEMBER(mdt_body, mbo_dom_blocks);
CHECK_MEMBER(mdt_body, mbo_padding_8);
CHECK_MEMBER(mdt_body, mbo_padding_9);
CHECK_MEMBER(mdt_body, mbo_padding_10);
CHECK_MEMBER(mdt_rec_setattr, sa_attr_flags);
CHECK_MEMBER(mdt_rec_setattr, sa_mode);
CHECK_MEMBER(mdt_rec_setattr, sa_bias);
- CHECK_MEMBER(mdt_rec_setattr, sa_padding_3);
+ CHECK_MEMBER(mdt_rec_setattr, sa_projid);
CHECK_MEMBER(mdt_rec_setattr, sa_padding_4);
CHECK_MEMBER(mdt_rec_setattr, sa_padding_5);
}
}
static void
+check_mdt_rec_resync(void)
+{
+ BLANK_LINE();
+ CHECK_STRUCT(mdt_rec_resync);
+ CHECK_MEMBER(mdt_rec_resync, rs_opcode);
+ CHECK_MEMBER(mdt_rec_resync, rs_cap);
+ CHECK_MEMBER(mdt_rec_resync, rs_fsuid);
+ CHECK_MEMBER(mdt_rec_resync, rs_fsuid_h);
+ CHECK_MEMBER(mdt_rec_resync, rs_fsgid);
+ CHECK_MEMBER(mdt_rec_resync, rs_fsgid_h);
+ CHECK_MEMBER(mdt_rec_resync, rs_suppgid1);
+ CHECK_MEMBER(mdt_rec_resync, rs_suppgid1_h);
+ CHECK_MEMBER(mdt_rec_resync, rs_suppgid2);
+ CHECK_MEMBER(mdt_rec_resync, rs_suppgid2_h);
+ CHECK_MEMBER(mdt_rec_resync, rs_fid);
+ CHECK_MEMBER(mdt_rec_resync, rs_padding0);
+ CHECK_MEMBER(mdt_rec_resync, rs_padding1);
+ CHECK_MEMBER(mdt_rec_resync, rs_padding2);
+ CHECK_MEMBER(mdt_rec_resync, rs_padding3);
+ CHECK_MEMBER(mdt_rec_resync, rs_padding4);
+ CHECK_MEMBER(mdt_rec_resync, rs_bias);
+ CHECK_MEMBER(mdt_rec_resync, rs_padding5);
+ CHECK_MEMBER(mdt_rec_resync, rs_padding6);
+ CHECK_MEMBER(mdt_rec_resync, rs_padding7);
+ CHECK_MEMBER(mdt_rec_resync, rs_padding8);
+ CHECK_MEMBER(mdt_rec_resync, rs_padding9);
+}
+
+static void
check_mdt_rec_reint(void)
{
BLANK_LINE();
BLANK_LINE();
CHECK_STRUCT(ldlm_inodebits);
CHECK_MEMBER(ldlm_inodebits, bits);
+ CHECK_MEMBER(ldlm_inodebits, try_bits);
}
static void
CHECK_MEMBER(llog_setattr64_rec, lsr_gid_h);
CHECK_MEMBER(llog_setattr64_rec, lsr_valid);
CHECK_MEMBER(llog_setattr64_rec, lsr_tail);
+ CHECK_MEMBER(llog_setattr64_rec_v2, lsr_projid);
}
static void
CHECK_STRUCT(llog_changelog_user_rec);
CHECK_MEMBER(llog_changelog_user_rec, cur_hdr);
CHECK_MEMBER(llog_changelog_user_rec, cur_id);
- CHECK_MEMBER(llog_changelog_user_rec, cur_padding);
+ CHECK_MEMBER(llog_changelog_user_rec, cur_time);
CHECK_MEMBER(llog_changelog_user_rec, cur_endrec);
CHECK_MEMBER(llog_changelog_user_rec, cur_tail);
}
}
static void
-check_llog_cookie(void)
-{
- BLANK_LINE();
- CHECK_STRUCT(llog_cookie);
- CHECK_MEMBER(llog_cookie, lgc_lgl);
- CHECK_MEMBER(llog_cookie, lgc_subsys);
- CHECK_MEMBER(llog_cookie, lgc_index);
- CHECK_MEMBER(llog_cookie, lgc_padding);
-}
-
-static void
check_llogd_body(void)
{
BLANK_LINE();
printf("#ifdef CONFIG_FS_POSIX_ACL\n");
CHECK_STRUCT_TYPEDEF(posix_acl_xattr_header);
CHECK_MEMBER_TYPEDEF(posix_acl_xattr_header, a_version);
+ printf("#ifndef HAVE_STRUCT_POSIX_ACL_XATTR\n");
CHECK_MEMBER_TYPEDEF(posix_acl_xattr_header, a_entries);
+ printf("#endif /* HAVE_STRUCT_POSIX_ACL_XATTR */\n");
printf("#endif /* CONFIG_FS_POSIX_ACL */\n");
}
static void check_layout_intent(void)
{
- BLANK_LINE();
- CHECK_STRUCT(layout_intent);
- CHECK_MEMBER(layout_intent, li_opc);
- CHECK_MEMBER(layout_intent, li_flags);
- CHECK_MEMBER(layout_intent, li_start);
- CHECK_MEMBER(layout_intent, li_end);
+ BLANK_LINE();
+ CHECK_STRUCT(layout_intent);
+ CHECK_MEMBER(layout_intent, li_opc);
+ CHECK_MEMBER(layout_intent, li_flags);
+ CHECK_MEMBER(layout_intent, li_extent);
CHECK_VALUE(LAYOUT_INTENT_ACCESS);
CHECK_VALUE(LAYOUT_INTENT_READ);
CHECK_MEMBER(lfsck_request, lr_flags);
CHECK_MEMBER(lfsck_request, lr_fid);
CHECK_MEMBER(lfsck_request, lr_fid2);
- CHECK_MEMBER(lfsck_request, lr_fid3);
+ CHECK_MEMBER(lfsck_request, lr_comp_id);
+ CHECK_MEMBER(lfsck_request, lr_padding_0);
CHECK_MEMBER(lfsck_request, lr_padding_1);
CHECK_MEMBER(lfsck_request, lr_padding_2);
+ CHECK_MEMBER(lfsck_request, lr_padding_3);
CHECK_VALUE_X(LFSCK_TYPE_SCRUB);
CHECK_VALUE_X(LFSCK_TYPE_LAYOUT);
CHECK_MEMBER(llog_update_record, lur_update_rec);
}
-static 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)
{
- char unameinfo[80];
- char gccinfo[80];
-
- system_string("uname -a", unameinfo, sizeof(unameinfo));
- system_string(CC " -v 2>&1 | tail -1", gccinfo, sizeof(gccinfo));
+ BLANK_LINE();
printf ("void lustre_assert_wire_constants(void)\n"
"{\n"
- " /* Wire protocol assertions generated by 'wirecheck'\n"
- " * (make -C lustre/utils newwiretest)\n"
- " * running on %s\n"
- " * with %s */\n"
- "\n", unameinfo, gccinfo);
+ " /* Wire protocol assertions generated by 'wirecheck'\n"
+ " * (make -C lustre/utils newwiretest)\n"
+ " */\n");
- BLANK_LINE ();
+ BLANK_LINE();
COMMENT("Constants...");
CHECK_VALUE(PTL_RPC_MSG_REQUEST);
CHECK_VALUE_64X(MDS_ATTR_CTIME_SET);
CHECK_VALUE_64X(MDS_ATTR_FROM_OPEN);
CHECK_VALUE_64X(MDS_ATTR_BLOCKS);
+ CHECK_VALUE_64X(MDS_ATTR_PROJID);
CHECK_VALUE(FLD_QUERY);
CHECK_VALUE(FLD_READ);
CHECK_STRUCT(obd_uuid);
check_lu_seq_range();
check_lustre_mdt_attrs();
+ check_lustre_ost_attrs();
CHECK_VALUE(OUT_CREATE);
CHECK_VALUE(OUT_DESTROY);
check_lustre_msg_v2();
check_ptlrpc_body();
check_obd_connect_data();
+ check_ost_layout();
check_obdo();
check_lov_ost_data_v1();
check_lov_mds_md_v1();
check_mdt_rec_unlink();
check_mdt_rec_rename();
check_mdt_rec_setxattr();
+ check_mdt_rec_resync();
check_mdt_rec_reint();
check_lmv_desc();
check_lov_desc();
check_llog_gen();
check_llog_gen_rec();
check_llog_log_hdr();
- check_llog_cookie();
check_llogd_body();
check_llogd_conn_body();
check_ll_fiemap_info_key();