Whamcloud - gitweb
LU-5607 ptlrpc: restore posix_acl_xattr checks
[fs/lustre-release.git] / lustre / utils / wirecheck.c
index 5e9d2ab..cf030e9 100644 (file)
@@ -526,6 +526,7 @@ check_obd_connect_data(void)
        CHECK_DEFINE_64X(OBD_CONNECT_OPEN_BY_FID);
        CHECK_DEFINE_64X(OBD_CONNECT_LFSCK);
        CHECK_DEFINE_64X(OBD_CONNECT_UNLINK_CLOSE);
+       CHECK_DEFINE_64X(OBD_CONNECT_DIR_STRIPE);
 
        CHECK_VALUE_X(OBD_CKSUM_CRC32);
        CHECK_VALUE_X(OBD_CKSUM_ADLER);
@@ -690,6 +691,29 @@ check_lov_mds_md_v3(void)
 }
 
 static void
+check_lmv_mds_md_v1(void)
+{
+       BLANK_LINE();
+       CHECK_STRUCT(lmv_mds_md_v1);
+       CHECK_MEMBER(lmv_mds_md_v1, lmv_magic);
+       CHECK_MEMBER(lmv_mds_md_v1, lmv_stripe_count);
+       CHECK_MEMBER(lmv_mds_md_v1, lmv_master_mdt_index);
+       CHECK_MEMBER(lmv_mds_md_v1, lmv_hash_type);
+       CHECK_MEMBER(lmv_mds_md_v1, lmv_layout_version);
+       CHECK_MEMBER(lmv_mds_md_v1, lmv_padding1);
+       CHECK_MEMBER(lmv_mds_md_v1, lmv_padding2);
+       CHECK_MEMBER(lmv_mds_md_v1, lmv_padding3);
+       CHECK_MEMBER(lmv_mds_md_v1, lmv_pool_name[LOV_MAXPOOLNAME]);
+       CHECK_MEMBER(lmv_mds_md_v1, lmv_stripe_fids[0]);
+
+       CHECK_CDEFINE(LMV_MAGIC_V1);
+       CHECK_CDEFINE(LMV_MAGIC_STRIPE);
+       CHECK_CDEFINE(LMV_HASH_TYPE_MASK);
+       CHECK_CDEFINE(LMV_HASH_FLAG_MIGRATION);
+       CHECK_CDEFINE(LMV_HASH_FLAG_DEAD);
+}
+
+static void
 check_obd_statfs(void)
 {
        BLANK_LINE();
@@ -830,9 +854,9 @@ check_niobuf_remote(void)
 {
        BLANK_LINE();
        CHECK_STRUCT(niobuf_remote);
-       CHECK_MEMBER(niobuf_remote, offset);
-       CHECK_MEMBER(niobuf_remote, len);
-       CHECK_MEMBER(niobuf_remote, flags);
+       CHECK_MEMBER(niobuf_remote, rnb_offset);
+       CHECK_MEMBER(niobuf_remote, rnb_len);
+       CHECK_MEMBER(niobuf_remote, rnb_flags);
 
        CHECK_DEFINE_X(OBD_BRW_READ);
        CHECK_DEFINE_X(OBD_BRW_WRITE);
@@ -1653,6 +1677,20 @@ check_llogd_body(void)
        CHECK_CVALUE(LLOG_ORIGIN_HANDLE_DESTROY);
        CHECK_CVALUE(LLOG_FIRST_OPC);
        CHECK_CVALUE(LLOG_LAST_OPC);
+
+       CHECK_CVALUE(LLOG_CONFIG_ORIG_CTXT);
+       CHECK_CVALUE(LLOG_CONFIG_REPL_CTXT);
+       CHECK_CVALUE(LLOG_MDS_OST_ORIG_CTXT);
+       CHECK_CVALUE(LLOG_MDS_OST_REPL_CTXT);
+       CHECK_CVALUE(LLOG_SIZE_ORIG_CTXT);
+       CHECK_CVALUE(LLOG_SIZE_REPL_CTXT);
+       CHECK_CVALUE(LLOG_TEST_ORIG_CTXT);
+       CHECK_CVALUE(LLOG_TEST_REPL_CTXT);
+       CHECK_CVALUE(LLOG_CHANGELOG_ORIG_CTXT);
+       CHECK_CVALUE(LLOG_CHANGELOG_REPL_CTXT);
+       CHECK_CVALUE(LLOG_CHANGELOG_USER_ORIG_CTXT);
+       CHECK_CVALUE(LLOG_AGENT_ORIG_CTXT);
+       CHECK_CVALUE(LLOG_MAX_CTXTS);
 }
 
 static void
@@ -1751,6 +1789,45 @@ check_getinfo_fid2path(void)
        CHECK_MEMBER(getinfo_fid2path, gf_path[0]);
 }
 
+/* We don't control the definitions of posix_acl_xattr_{entry,header}
+ * and so we shouldn't have used them in our wire protocol. But it's
+ * too late now and so we emit checks against the *fixed* definitions
+ * below. See LU-5607. */
+
+typedef struct {
+       __u16                   e_tag;
+       __u16                   e_perm;
+       __u32                   e_id;
+} posix_acl_xattr_entry;
+
+typedef struct {
+       __u32                   a_version;
+       posix_acl_xattr_entry   a_entries[0];
+} posix_acl_xattr_header;
+
+static void
+check_posix_acl_xattr_entry(void)
+{
+       BLANK_LINE();
+       printf("#ifdef CONFIG_FS_POSIX_ACL\n");
+       CHECK_STRUCT_TYPEDEF(posix_acl_xattr_entry);
+       CHECK_MEMBER_TYPEDEF(posix_acl_xattr_entry, e_tag);
+       CHECK_MEMBER_TYPEDEF(posix_acl_xattr_entry, e_perm);
+       CHECK_MEMBER_TYPEDEF(posix_acl_xattr_entry, e_id);
+       printf("#endif /* CONFIG_FS_POSIX_ACL */\n");
+}
+
+static void
+check_posix_acl_xattr_header(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);
+       CHECK_MEMBER_TYPEDEF(posix_acl_xattr_header, a_entries);
+       printf("#endif /* CONFIG_FS_POSIX_ACL */\n");
+}
+
 static void
 check_ll_user_fiemap(void)
 {
@@ -2397,6 +2474,7 @@ main(int argc, char **argv)
        check_lov_ost_data_v1();
        check_lov_mds_md_v1();
        check_lov_mds_md_v3();
+       check_lmv_mds_md_v1();
        check_obd_statfs();
        check_obd_ioobj();
        check_obd_quotactl();
@@ -2459,6 +2537,8 @@ main(int argc, char **argv)
        check_getinfo_fid2path();
        check_ll_user_fiemap();
        check_ll_fiemap_extent();
+       check_posix_acl_xattr_entry();
+       check_posix_acl_xattr_header();
        check_link_ea_header();
        check_link_ea_entry();
        check_layout_intent();