X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Fwirecheck.c;h=55d026ba64a5a087f7f596f0a2f621e1134f579a;hb=707916ab3cf220ff1784f958a0bddb42063b1bc6;hp=6b971f119da6d49fb2a9d2248995d73dbec673f3;hpb=f83a8d69c1dc128af5c40811d222bd92ee73e437;p=fs%2Flustre-release.git diff --git a/lustre/utils/wirecheck.c b/lustre/utils/wirecheck.c index 6b971f1..55d026b 100644 --- a/lustre/utils/wirecheck.c +++ b/lustre/utils/wirecheck.c @@ -1,6 +1,39 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: + * + * GPL HEADER START + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU General Public License + * version 2 along with this program; If not, see + * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + * GPL HEADER END */ +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Use is subject to license terms. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. + */ + #include #include #include @@ -54,23 +87,44 @@ do { \ CHECK_VALUE((int)offsetof(struct s, m)); \ } while(0) +#define CHECK_MEMBER_OFFSET_TYPEDEF(s,m) \ +do { \ + CHECK_VALUE((int)offsetof(s, m)); \ +} while(0) + #define CHECK_MEMBER_SIZEOF(s,m) \ do { \ CHECK_VALUE((int)sizeof(((struct s *)0)->m)); \ } while(0) +#define CHECK_MEMBER_SIZEOF_TYPEDEF(s,m) \ +do { \ + CHECK_VALUE((int)sizeof(((s *)0)->m)); \ +} while(0) + #define CHECK_MEMBER(s,m) \ do { \ CHECK_MEMBER_OFFSET(s, m); \ CHECK_MEMBER_SIZEOF(s, m); \ } while(0) +#define CHECK_MEMBER_TYPEDEF(s,m) \ +do { \ + CHECK_MEMBER_OFFSET_TYPEDEF(s, m); \ + CHECK_MEMBER_SIZEOF_TYPEDEF(s, m); \ +} while(0) + #define CHECK_STRUCT(s) \ do { \ COMMENT("Checks for struct "#s); \ CHECK_VALUE((int)sizeof(struct s)); \ } while(0) +#define CHECK_STRUCT_TYPEDEF(s) \ +do { \ + COMMENT("Checks for type "#s); \ + CHECK_VALUE((int)sizeof(s)); \ +} while(0) static void check_lustre_handle(void) @@ -81,26 +135,6 @@ check_lustre_handle(void) } void -check_lustre_msg_v1(void) -{ - BLANK_LINE(); - CHECK_STRUCT(lustre_msg_v1); - CHECK_MEMBER(lustre_msg_v1, lm_handle); - CHECK_MEMBER(lustre_msg_v1, lm_magic); - CHECK_MEMBER(lustre_msg_v1, lm_type); - CHECK_MEMBER(lustre_msg_v1, lm_version); - CHECK_MEMBER(lustre_msg_v1, lm_opc); - CHECK_MEMBER(lustre_msg_v1, lm_last_xid); - CHECK_MEMBER(lustre_msg_v1, lm_last_committed); - CHECK_MEMBER(lustre_msg_v1, lm_transno); - CHECK_MEMBER(lustre_msg_v1, lm_status); - CHECK_MEMBER(lustre_msg_v1, lm_flags); - CHECK_MEMBER(lustre_msg_v1, lm_conn_cnt); - CHECK_MEMBER(lustre_msg_v1, lm_bufcount); - CHECK_MEMBER(lustre_msg_v1, lm_buflens[0]); -} - -void check_lustre_msg_v2(void) { BLANK_LINE(); @@ -109,8 +143,8 @@ check_lustre_msg_v2(void) CHECK_MEMBER(lustre_msg_v2, lm_secflvr); CHECK_MEMBER(lustre_msg_v2, lm_magic); CHECK_MEMBER(lustre_msg_v2, lm_repsize); - CHECK_MEMBER(lustre_msg_v2, lm_timeout); - CHECK_MEMBER(lustre_msg_v2, lm_padding_1); + CHECK_MEMBER(lustre_msg_v2, lm_cksum); + CHECK_MEMBER(lustre_msg_v2, lm_flags); CHECK_MEMBER(lustre_msg_v2, lm_padding_2); CHECK_MEMBER(lustre_msg_v2, lm_padding_3); CHECK_MEMBER(lustre_msg_v2, lm_buflens[0]); @@ -133,8 +167,8 @@ check_ptlrpc_body(void) CHECK_MEMBER(ptlrpc_body, pb_flags); CHECK_MEMBER(ptlrpc_body, pb_op_flags); CHECK_MEMBER(ptlrpc_body, pb_conn_cnt); - CHECK_MEMBER(ptlrpc_body, pb_padding_1); - CHECK_MEMBER(ptlrpc_body, pb_padding_2); + CHECK_MEMBER(ptlrpc_body, pb_timeout); + CHECK_MEMBER(ptlrpc_body, pb_service_time); CHECK_MEMBER(ptlrpc_body, pb_slv); CHECK_MEMBER(ptlrpc_body, pb_limit); } @@ -153,9 +187,9 @@ static void check_obd_connect_data(void) CHECK_MEMBER(obd_connect_data, ocd_nllg); CHECK_MEMBER(obd_connect_data, ocd_transno); CHECK_MEMBER(obd_connect_data, ocd_group); + CHECK_MEMBER(obd_connect_data, ocd_cksum_types); CHECK_MEMBER(obd_connect_data, padding1); CHECK_MEMBER(obd_connect_data, padding2); - CHECK_MEMBER(obd_connect_data, padding3); CHECK_CDEFINE(OBD_CONNECT_RDONLY); CHECK_CDEFINE(OBD_CONNECT_INDEX); @@ -166,13 +200,14 @@ static void check_obd_connect_data(void) CHECK_CDEFINE(OBD_CONNECT_ACL); CHECK_CDEFINE(OBD_CONNECT_XATTR); CHECK_CDEFINE(OBD_CONNECT_REAL); + CHECK_CDEFINE(OBD_CONNECT_CKSUM); CHECK_CDEFINE(OBD_CONNECT_TRUNCLOCK); CHECK_CDEFINE(OBD_CONNECT_IBITS); CHECK_CDEFINE(OBD_CONNECT_JOIN); CHECK_CDEFINE(OBD_CONNECT_ATTRFID); CHECK_CDEFINE(OBD_CONNECT_NODEVOH); - CHECK_CDEFINE(OBD_CONNECT_LCL_CLIENT); CHECK_CDEFINE(OBD_CONNECT_RMT_CLIENT); + CHECK_CDEFINE(OBD_CONNECT_RMT_CLIENT_FORCE); CHECK_CDEFINE(OBD_CONNECT_BRW_SIZE); CHECK_CDEFINE(OBD_CONNECT_QUOTA64); CHECK_CDEFINE(OBD_CONNECT_MDS_CAPA); @@ -211,9 +246,13 @@ check_obdo(void) CHECK_MEMBER(obdo, o_mds); CHECK_MEMBER(obdo, o_stripe_idx); CHECK_MEMBER(obdo, o_padding_1); - CHECK_MEMBER(obdo, o_inline); - - CHECK_VALUE(OBD_INLINESZ); + CHECK_MEMBER(obdo, o_handle); + CHECK_MEMBER(obdo, o_lcookie); + CHECK_MEMBER(obdo, o_padding_2); + CHECK_MEMBER(obdo, o_padding_3); + CHECK_MEMBER(obdo, o_padding_4); + CHECK_MEMBER(obdo, o_padding_5); + CHECK_MEMBER(obdo, o_padding_6); CHECK_CDEFINE(OBD_MD_FLID); CHECK_CDEFINE(OBD_MD_FLATIME); @@ -229,7 +268,6 @@ check_obdo(void) CHECK_CDEFINE(OBD_MD_FLFLAGS); CHECK_CDEFINE(OBD_MD_FLNLINK); CHECK_CDEFINE(OBD_MD_FLGENER); - CHECK_CDEFINE(OBD_MD_FLINLINE); CHECK_CDEFINE(OBD_MD_FLRDEV); CHECK_CDEFINE(OBD_MD_FLEASIZE); CHECK_CDEFINE(OBD_MD_LINKNAME); @@ -261,6 +299,11 @@ check_obdo(void) CHECK_CDEFINE(OBD_FL_DEBUG_CHECK); CHECK_CDEFINE(OBD_FL_NO_USRQUOTA); CHECK_CDEFINE(OBD_FL_NO_GRPQUOTA); + CHECK_CDEFINE(OBD_FL_TRUNCLOCK); + CHECK_CDEFINE(OBD_FL_CKSUM_CRC32); + CHECK_CDEFINE(OBD_FL_CKSUM_ADLER); + CHECK_CVALUE(OBD_CKSUM_CRC32); + CHECK_CVALUE(OBD_CKSUM_ADLER); } static void @@ -301,6 +344,33 @@ check_lov_mds_md_join(void) } static void +check_lov_mds_md_v3(void) +{ + BLANK_LINE(); + CHECK_STRUCT(lov_mds_md_v3); + CHECK_MEMBER(lov_mds_md_v3, lmm_magic); + CHECK_MEMBER(lov_mds_md_v3, lmm_pattern); + CHECK_MEMBER(lov_mds_md_v3, lmm_object_id); + CHECK_MEMBER(lov_mds_md_v3, lmm_object_gr); + CHECK_MEMBER(lov_mds_md_v3, lmm_stripe_size); + CHECK_MEMBER(lov_mds_md_v3, lmm_stripe_count); + CHECK_MEMBER(lov_mds_md_v3, lmm_pool_name); + CHECK_MEMBER(lov_mds_md_v3, lmm_objects); + + BLANK_LINE(); + CHECK_STRUCT(lov_ost_data_v1); + CHECK_MEMBER(lov_ost_data_v1, l_object_id); + CHECK_MEMBER(lov_ost_data_v1, l_object_gr); + CHECK_MEMBER(lov_ost_data_v1, l_ost_gen); + CHECK_MEMBER(lov_ost_data_v1, l_ost_idx); + + CHECK_CDEFINE(LOV_MAGIC_V3); + + CHECK_VALUE(LOV_PATTERN_RAID0); + CHECK_VALUE(LOV_PATTERN_RAID1); +} + +static void check_obd_statfs(void) { BLANK_LINE(); @@ -500,6 +570,22 @@ check_mds_rec_setattr(void) CHECK_MEMBER(mds_rec_setattr, sa_uid); CHECK_MEMBER(mds_rec_setattr, sa_gid); CHECK_MEMBER(mds_rec_setattr, sa_attr_flags); + CHECK_CDEFINE(MDS_ATTR_MODE); + CHECK_CDEFINE(MDS_ATTR_UID); + CHECK_CDEFINE(MDS_ATTR_GID); + CHECK_CDEFINE(MDS_ATTR_SIZE); + CHECK_CDEFINE(MDS_ATTR_ATIME); + CHECK_CDEFINE(MDS_ATTR_MTIME); + CHECK_CDEFINE(MDS_ATTR_CTIME); + CHECK_CDEFINE(MDS_ATTR_ATIME_SET); + CHECK_CDEFINE(MDS_ATTR_MTIME_SET); + CHECK_CDEFINE(MDS_ATTR_FORCE); + CHECK_CDEFINE(MDS_ATTR_ATTR_FLAG); + CHECK_CDEFINE(MDS_ATTR_KILL_SUID); + CHECK_CDEFINE(MDS_ATTR_KILL_SGID); + CHECK_CDEFINE(MDS_ATTR_CTIME_SET); + CHECK_CDEFINE(MDS_ATTR_FROM_OPEN); + CHECK_CDEFINE(MDS_ATTR_BLOCKS); } static void @@ -696,6 +782,19 @@ check_ldlm_lvb(void) CHECK_MEMBER(ost_lvb, lvb_blocks); } +static void +check_cfg_marker(void) +{ + BLANK_LINE(); + CHECK_STRUCT(cfg_marker); + CHECK_MEMBER(cfg_marker, cm_step); + CHECK_MEMBER(cfg_marker, cm_flags); + CHECK_MEMBER(cfg_marker, cm_vers); + CHECK_MEMBER(cfg_marker, cm_createtime); + CHECK_MEMBER(cfg_marker, cm_canceltime); + CHECK_MEMBER(cfg_marker, cm_tgtname); + CHECK_MEMBER(cfg_marker, cm_comment); +} static void check_llog_logid(void) @@ -815,6 +914,22 @@ check_llog_setattr_rec(void) } static void +check_llog_setattr64_rec(void) +{ + BLANK_LINE(); + CHECK_STRUCT(llog_setattr64_rec); + CHECK_MEMBER(llog_setattr64_rec, lsr_hdr); + CHECK_MEMBER(llog_setattr64_rec, lsr_oid); + CHECK_MEMBER(llog_setattr64_rec, lsr_ogen); + CHECK_MEMBER(llog_setattr64_rec, padding); + CHECK_MEMBER(llog_setattr64_rec, lsr_uid); + CHECK_MEMBER(llog_setattr64_rec, lsr_uid_h); + CHECK_MEMBER(llog_setattr64_rec, lsr_gid); + CHECK_MEMBER(llog_setattr64_rec, lsr_gid_h); + CHECK_MEMBER(llog_setattr64_rec, lsr_tail); +} + +static void check_llog_size_change_rec(void) { BLANK_LINE(); @@ -936,17 +1051,8 @@ check_qunit_data(void) CHECK_MEMBER(qunit_data, qd_id); CHECK_MEMBER(qunit_data, qd_flags); CHECK_MEMBER(qunit_data, qd_count); -} - -static void -check_qunit_data_old(void) -{ - BLANK_LINE(); - CHECK_STRUCT(qunit_data_old); - CHECK_MEMBER(qunit_data_old, qd_id); - CHECK_MEMBER(qunit_data_old, qd_type); - CHECK_MEMBER(qunit_data_old, qd_count); - CHECK_MEMBER(qunit_data_old, qd_isblk); + CHECK_MEMBER(qunit_data, qd_qunit); + CHECK_MEMBER(qunit_data, padding); } static void @@ -988,6 +1094,81 @@ check_lustre_disk_data(void) } static void +check_posix_acl_xattr_entry(void) +{ + BLANK_LINE(); + 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); +} + +static void +check_posix_acl_xattr_header(void) +{ + BLANK_LINE(); + 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); +} + +static void +check_quota_adjust_qunit(void) +{ + BLANK_LINE(); + CHECK_STRUCT(quota_adjust_qunit); + CHECK_MEMBER(quota_adjust_qunit, qaq_flags); + CHECK_MEMBER(quota_adjust_qunit, qaq_id); + CHECK_MEMBER(quota_adjust_qunit, qaq_bunit_sz); + CHECK_MEMBER(quota_adjust_qunit, qaq_iunit_sz); + CHECK_MEMBER(quota_adjust_qunit, padding1); +} + +static void +check_ll_user_fiemap(void) +{ + BLANK_LINE(); + CHECK_STRUCT(ll_user_fiemap); + CHECK_MEMBER(ll_user_fiemap, fm_start); + CHECK_MEMBER(ll_user_fiemap, fm_length); + CHECK_MEMBER(ll_user_fiemap, fm_flags); + CHECK_MEMBER(ll_user_fiemap, fm_mapped_extents); + CHECK_MEMBER(ll_user_fiemap, fm_extent_count); + CHECK_MEMBER(ll_user_fiemap, fm_reserved); + CHECK_MEMBER(ll_user_fiemap, fm_extents); + + CHECK_CDEFINE(FIEMAP_FLAG_SYNC); + CHECK_CDEFINE(FIEMAP_FLAG_XATTR); + CHECK_CDEFINE(FIEMAP_FLAG_DEVICE_ORDER); +} + +static void +check_ll_fiemap_extent(void) +{ + BLANK_LINE(); + CHECK_STRUCT(ll_fiemap_extent); + CHECK_MEMBER(ll_fiemap_extent, fe_logical); + CHECK_MEMBER(ll_fiemap_extent, fe_physical); + CHECK_MEMBER(ll_fiemap_extent, fe_length); + CHECK_MEMBER(ll_fiemap_extent, fe_flags); + CHECK_MEMBER(ll_fiemap_extent, fe_device); + + CHECK_CDEFINE(FIEMAP_EXTENT_LAST); + CHECK_CDEFINE(FIEMAP_EXTENT_UNKNOWN); + CHECK_CDEFINE(FIEMAP_EXTENT_DELALLOC); + CHECK_CDEFINE(FIEMAP_EXTENT_NO_DIRECT); + CHECK_CDEFINE(FIEMAP_EXTENT_SECONDARY); + CHECK_CDEFINE(FIEMAP_EXTENT_NET); + CHECK_CDEFINE(FIEMAP_EXTENT_DATA_COMPRESSED); + CHECK_CDEFINE(FIEMAP_EXTENT_DATA_ENCRYPTED); + CHECK_CDEFINE(FIEMAP_EXTENT_NOT_ALIGNED); + CHECK_CDEFINE(FIEMAP_EXTENT_DATA_INLINE); + CHECK_CDEFINE(FIEMAP_EXTENT_DATA_TAIL); + CHECK_CDEFINE(FIEMAP_EXTENT_UNWRITTEN); + CHECK_CDEFINE(FIEMAP_EXTENT_MERGED); +} + +static void system_string (char *cmdline, char *str, int len) { int fds[2]; @@ -1050,7 +1231,7 @@ main(int argc, char **argv) printf ("void lustre_assert_wire_constants(void)\n" "{\n" " /* Wire protocol assertions generated by 'wirecheck'\n" - " * (make -C lustre/utils newwirecheck)\n" + " * (make -C lustre/utils newwiretest)\n" " * running on %s\n" " * with %s */\n" "\n", unameinfo, gccinfo); @@ -1058,9 +1239,9 @@ main(int argc, char **argv) BLANK_LINE (); COMMENT("Constants..."); - CHECK_DEFINE(LUSTRE_MSG_MAGIC_V1); CHECK_DEFINE(LUSTRE_MSG_MAGIC_V2); CHECK_DEFINE(PTLRPC_MSG_VERSION); + CHECK_VALUE(MSGHDR_AT_SUPPORT); CHECK_VALUE(PTL_RPC_MSG_REQUEST); CHECK_VALUE(PTL_RPC_MSG_ERR); @@ -1091,6 +1272,7 @@ main(int argc, char **argv) CHECK_VALUE(OST_SYNC); CHECK_VALUE(OST_QUOTACHECK); CHECK_VALUE(OST_QUOTACTL); + CHECK_VALUE(OST_QUOTA_ADJUST_QUNIT); CHECK_VALUE(OST_LAST_OPC); CHECK_DEFINE(OBD_OBJECT_EOF); @@ -1126,6 +1308,7 @@ main(int argc, char **argv) CHECK_VALUE(MGS_EXCEPTION); CHECK_VALUE(MGS_TARGET_REG); CHECK_VALUE(MGS_TARGET_DEL); + CHECK_VALUE(MGS_SET_INFO); CHECK_VALUE(DISP_IT_EXECD); CHECK_VALUE(DISP_LOOKUP_EXECD); @@ -1153,6 +1336,7 @@ main(int argc, char **argv) CHECK_VALUE(LCK_NL); CHECK_VALUE(LCK_GROUP); CHECK_VALUE(LCK_MAXMODE); + CHECK_VALUE(LCK_MODE_NUM); CHECK_CVALUE(LDLM_PLAIN); CHECK_CVALUE(LDLM_EXTENT); @@ -1172,19 +1356,18 @@ main(int argc, char **argv) CHECK_VALUE(MGS_EXCEPTION); CHECK_VALUE(MGS_TARGET_REG); CHECK_VALUE(MGS_TARGET_DEL); + CHECK_VALUE(MGS_SET_INFO); COMMENT("Sizes and Offsets"); BLANK_LINE(); CHECK_STRUCT(obd_uuid); check_lustre_handle(); - check_lustre_msg_v1(); check_lustre_msg_v2(); - printf(" LASSERT(offsetof(struct lustre_msg_v1, lm_magic) == " - "offsetof(struct lustre_msg_v2, lm_magic));\n"); check_ptlrpc_body(); check_obd_connect_data(); check_obdo(); check_lov_mds_md_v1(); + check_lov_mds_md_v3(); check_lov_mds_md_join(); check_obd_statfs(); check_obd_ioobj(); @@ -1211,6 +1394,7 @@ main(int argc, char **argv) check_ldlm_request(); check_ldlm_reply(); check_ldlm_lvb(); + check_cfg_marker(); check_llog_logid(); check_llog_catid(); check_llog_rec_hdr(); @@ -1220,6 +1404,7 @@ main(int argc, char **argv) check_llog_orphan_rec(); check_llog_unlink_rec(); check_llog_setattr_rec(); + check_llog_setattr64_rec(); check_llog_size_change_rec(); check_llog_gen(); check_llog_gen_rec(); @@ -1230,9 +1415,18 @@ main(int argc, char **argv) check_llog_array_rec(); check_mds_extent_desc(); check_qunit_data(); - check_qunit_data_old(); + check_quota_adjust_qunit(); check_mgs_target_info(); check_lustre_disk_data(); + check_ll_user_fiemap(); + check_ll_fiemap_extent(); + printf("#ifdef LIBLUSTRE_POSIX_ACL\n"); +#ifndef LIBLUSTRE_POSIX_ACL +#error build generator without LIBLUSTRE_POSIX_ACL defined - produce wrong check code. +#endif + check_posix_acl_xattr_entry(); + check_posix_acl_xattr_header(); + printf("#endif\n"); printf("}\n\n");