X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre%2Flustre_idl.h;h=9bb4bbf19f0d24b4d171c5bfa40cad4fc05fd545;hb=20aee71e3b66eb183cddef7a018887078027b815;hp=a9f6ba5bb5510c7558d93acff5c6070ff6fb6511;hpb=0517160dd68ac026513ad1b8e3e6f7abd4acfdef;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre/lustre_idl.h b/lustre/include/lustre/lustre_idl.h index a9f6ba5..9bb4bbf 100644 --- a/lustre/include/lustre/lustre_idl.h +++ b/lustre/include/lustre/lustre_idl.h @@ -142,6 +142,7 @@ #define SEQ_METADATA_PORTAL 30 #define SEQ_DATA_PORTAL 31 #define SEQ_CONTROLLER_PORTAL 32 +#define MGS_BULK_PORTAL 33 /* Portal 63 is reserved for the Cray Inc DVS - nic@cray.com, roe@cray.com, n8851@cray.com */ @@ -1102,6 +1103,11 @@ extern void lustre_swab_ptlrpc_body(struct ptlrpc_body *pb); #define OBD_CONNECT_64BITHASH 0x4000000000ULL /* client supports 64-bits * directory hash */ #define OBD_CONNECT_MAXBYTES 0x8000000000ULL /* max stripe size */ +#define OBD_CONNECT_IMP_RECOV 0x10000000000ULL /* imp recovery support */ + +#define OCD_HAS_FLAG(ocd, flg) \ + (!!((ocd)->ocd_connect_flags & OBD_CONNECT_##flg)) + /* also update obd_connect_names[] for lprocfs_rd_connect_flags() * and lustre/utils/wirecheck.c */ @@ -1138,7 +1144,7 @@ extern void lustre_swab_ptlrpc_body(struct ptlrpc_body *pb); OBD_CONNECT_64BITHASH | OBD_CONNECT_MAXBYTES) #define ECHO_CONNECT_SUPPORTED (0) #define MGS_CONNECT_SUPPORTED (OBD_CONNECT_VERSION | OBD_CONNECT_AT | \ - OBD_CONNECT_FULL20) + OBD_CONNECT_FULL20 | OBD_CONNECT_IMP_RECOV) /* Features required for this version of the client to work with server */ #define CLIENT_CONNECT_MDT_REQD (OBD_CONNECT_IBITS | OBD_CONNECT_FID | \ @@ -1168,7 +1174,7 @@ struct obd_connect_data_v1 { __u32 ocd_group; /* MDS group on OST */ __u32 ocd_cksum_types; /* supported checksum algorithms */ __u32 ocd_max_easize; /* How big LOV EA can be on MDS */ - __u32 padding; /* also fix lustre_swab_connect */ + __u32 ocd_instance; /* also fix lustre_swab_connect */ __u64 ocd_maxbytes; /* Maximum stripe size in bytes */ }; @@ -1185,27 +1191,27 @@ struct obd_connect_data { __u32 ocd_group; /* MDS group on OST */ __u32 ocd_cksum_types; /* supported checksum algorithms */ __u32 ocd_max_easize; /* How big LOV EA can be on MDS */ - __u32 padding; /* also fix lustre_swab_connect */ + __u32 ocd_instance; /* instance # of this target */ __u64 ocd_maxbytes; /* Maximum stripe size in bytes */ /* Fields after ocd_maxbytes are only accessible by the receiver * if the corresponding flag in ocd_connect_flags is set. Accessing * any field after ocd_maxbytes on the receiver without a valid flag * may result in out-of-bound memory access and kernel oops. */ - __u64 padding1; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 padding2; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 padding3; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 padding4; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 padding5; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 padding6; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 padding7; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 padding8; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 padding9; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 paddingA; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 paddingB; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 paddingC; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 paddingD; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 paddingE; /* added 2.2.0. also fix lustre_swab_connect */ - __u64 paddingF; /* added 2.2.0. also fix lustre_swab_connect */ + __u64 padding1; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 padding2; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 padding3; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 padding4; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 padding5; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 padding6; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 padding7; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 padding8; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 padding9; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 paddingA; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 paddingB; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 paddingC; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 paddingD; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 paddingE; /* added 2.1.0. also fix lustre_swab_connect */ + __u64 paddingF; /* added 2.1.0. also fix lustre_swab_connect */ }; @@ -1380,23 +1386,22 @@ struct lov_mds_md_v3 { /* LOV EA mds/wire data (little-endian) */ #define OBD_MD_MEA (0x0000000400000000ULL) /* CMD split EA */ #define OBD_MD_MDTIDX (0x0000000800000000ULL) /* Get MDT index */ -#define OBD_MD_FLXATTR (0x0000001000000000ULL) /* xattr */ -#define OBD_MD_FLXATTRLS (0x0000002000000000ULL) /* xattr list */ -#define OBD_MD_FLXATTRRM (0x0000004000000000ULL) /* xattr remove */ -#define OBD_MD_FLACL (0x0000008000000000ULL) /* ACL */ -#define OBD_MD_FLRMTPERM (0x0000010000000000ULL) /* remote permission */ -#define OBD_MD_FLMDSCAPA (0x0000020000000000ULL) /* MDS capability */ -#define OBD_MD_FLOSSCAPA (0x0000040000000000ULL) /* OSS capability */ -#define OBD_MD_FLCKSPLIT (0x0000080000000000ULL) /* Check split on server */ -#define OBD_MD_FLCROSSREF (0x0000100000000000ULL) /* Cross-ref case */ +#define OBD_MD_FLXATTR (0x0000001000000000ULL) /* xattr */ +#define OBD_MD_FLXATTRLS (0x0000002000000000ULL) /* xattr list */ +#define OBD_MD_FLXATTRRM (0x0000004000000000ULL) /* xattr remove */ +#define OBD_MD_FLACL (0x0000008000000000ULL) /* ACL */ +#define OBD_MD_FLRMTPERM (0x0000010000000000ULL) /* remote permission */ +#define OBD_MD_FLMDSCAPA (0x0000020000000000ULL) /* MDS capability */ +#define OBD_MD_FLOSSCAPA (0x0000040000000000ULL) /* OSS capability */ +#define OBD_MD_FLCKSPLIT (0x0000080000000000ULL) /* Check split on server */ +#define OBD_MD_FLCROSSREF (0x0000100000000000ULL) /* Cross-ref case */ #define OBD_MD_FLGETATTRLOCK (0x0000200000000000ULL) /* Get IOEpoch attributes * under lock */ -#define OBD_FL_TRUNC (0x0000200000000000ULL) /* for filter_truncate */ -#define OBD_MD_FLRMTLSETFACL (0x0001000000000000ULL) /* lfs lsetfacl case */ -#define OBD_MD_FLRMTLGETFACL (0x0002000000000000ULL) /* lfs lgetfacl case */ -#define OBD_MD_FLRMTRSETFACL (0x0004000000000000ULL) /* lfs rsetfacl case */ -#define OBD_MD_FLRMTRGETFACL (0x0008000000000000ULL) /* lfs rgetfacl case */ +#define OBD_MD_FLRMTLSETFACL (0x0001000000000000ULL) /* lfs lsetfacl case */ +#define OBD_MD_FLRMTLGETFACL (0x0002000000000000ULL) /* lfs lgetfacl case */ +#define OBD_MD_FLRMTRSETFACL (0x0004000000000000ULL) /* lfs rsetfacl case */ +#define OBD_MD_FLRMTRGETFACL (0x0008000000000000ULL) /* lfs rgetfacl case */ #define OBD_MD_FLGETATTR (OBD_MD_FLID | OBD_MD_FLATIME | OBD_MD_FLMTIME | \ OBD_MD_FLCTIME | OBD_MD_FLSIZE | OBD_MD_FLBLKSZ | \ @@ -1409,16 +1414,6 @@ struct lov_mds_md_v3 { /* LOV EA mds/wire data (little-endian) */ extern void lustre_swab_obd_statfs (struct obd_statfs *os); -#define OBD_STATFS_NODELAY 0x0001 /* requests should be send without delay - * and resends for avoid deadlocks */ -#define OBD_STATFS_FROM_CACHE 0x0002 /* the statfs callback should not update - * obd_osfs_age */ -#define OBD_STATFS_PTLRPCD 0x0004 /* requests will be sent via ptlrpcd - * instead of a specific set. This - * means that we cannot rely on the set - * interpret routine to be called. - * lov_statfs_fini() must thus be called - * by the request interpret routine */ /* ost_body.data values for OST_BRW */ @@ -1560,13 +1555,6 @@ extern void lustre_swab_ll_fid (struct ll_fid *fid); #define MDS_STATUS_CONN 1 #define MDS_STATUS_LOV 2 -struct mds_status_req { - __u32 flags; - __u32 repbuf; -}; - -extern void lustre_swab_mds_status_req (struct mds_status_req *r); - /* mdt_thread_info.mti_flags. */ enum md_op_flags { /* The flag indicates Size-on-MDS attributes are changed. */ @@ -1626,48 +1614,6 @@ static inline int ll_inode_to_ext_flags(int iflags) } #endif -/* - * while mds_body is to interact with 1.6, mdt_body is to interact with 2.0. - * both of them should have the same fields layout, because at client side - * one could be dynamically cast to the other. - * - * mdt_body has large size than mds_body, with unused padding (48 bytes) - * at the end. client always use size of mdt_body to prepare request/reply - * buffers, and actual data could be interepeted as mdt_body or mds_body - * accordingly. - */ -struct mds_body { - struct ll_fid fid1; - struct ll_fid fid2; - struct lustre_handle handle; - __u64 valid; - __u64 size; /* Offset, in the case of MDS_READPAGE */ - obd_time mtime; - obd_time atime; - obd_time ctime; - __u64 blocks; /* XID, in the case of MDS_READPAGE */ - __u64 io_epoch; - __u64 ino; - __u32 fsuid; - __u32 fsgid; - __u32 capability; - __u32 mode; - __u32 uid; - __u32 gid; - __u32 flags; /* from vfs for pin/unpin, MDS_BFLAG for close */ - __u32 rdev; - __u32 nlink; /* #bytes to read in the case of MDS_READPAGE */ - __u32 generation; - __u32 suppgid; - __u32 eadatasize; - __u32 aclsize; - __u32 max_mdsize; - __u32 max_cookiesize; - __u32 padding_4; /* also fix lustre_swab_mds_body */ -}; - -extern void lustre_swab_mds_body (struct mds_body *b); - struct mdt_body { struct lu_fid fid1; struct lu_fid fid2; @@ -1679,7 +1625,7 @@ struct mdt_body { obd_time ctime; __u64 blocks; /* XID, in the case of MDS_READPAGE */ __u64 ioepoch; - __u64 ino; /* for 1.6 compatibility */ + __u64 ino; __u32 fsuid; __u32 fsgid; __u32 capability; @@ -1689,7 +1635,7 @@ struct mdt_body { __u32 flags; /* from vfs for pin/unpin, MDS_BFLAG for close */ __u32 rdev; __u32 nlink; /* #bytes to read in the case of MDS_READPAGE */ - __u32 generation; /* for 1.6 compatibility */ + __u32 generation; __u32 suppgid; __u32 eadatasize; __u32 aclsize; @@ -1771,7 +1717,7 @@ extern void lustre_swab_quota_adjust_qunit(struct quota_adjust_qunit *q); #define LQUOTA_FLAGS_SETQUOTA 64UL /* being setquota on a uid/gid */ /* flags is specific for quota_adjust_qunit */ -#define LQUOTA_QAQ_CREATE_LQS (1 << 31) /* when it is set, need create lqs */ +#define LQUOTA_QAQ_CREATE_LQS (1UL << 31) /* when it is set, need create lqs */ /* the status of lqs_flags in struct lustre_qunit_size */ #define LQUOTA_QUNIT_FLAGS (LQUOTA_FLAGS_GRP | LQUOTA_FLAGS_BLK) @@ -1786,16 +1732,6 @@ extern void lustre_swab_quota_adjust_qunit(struct quota_adjust_qunit *q); #define QAQ_SET_ADJINO(qaq) ((qaq)->qaq_flags |= LQUOTA_FLAGS_ADJINO) #define QAQ_SET_CREATE_LQS(qaq) ((qaq)->qaq_flags |= LQUOTA_QAQ_CREATE_LQS) -/* inode access permission for remote user, the inode info are omitted, - * for client knows them. */ -struct mds_remote_perm { - __u32 rp_uid; - __u32 rp_gid; - __u32 rp_fsuid; - __u32 rp_fsgid; - __u32 rp_access_perm; /* MAY_READ/WRITE/EXEC */ -}; - /* permissions for md_perm.mp_perm */ enum { CFS_SETUID_PERM = 0x01, @@ -1805,8 +1741,8 @@ enum { CFS_RMTOWN_PERM = 0x10 }; -extern void lustre_swab_mds_remote_perm(struct mds_remote_perm *p); - +/* inode access permission for remote user, the inode info are omitted, + * for client knows them. */ struct mdt_remote_perm { __u32 rp_uid; __u32 rp_gid; @@ -1815,6 +1751,7 @@ struct mdt_remote_perm { __u32 rp_fsgid; __u32 rp_fsgid_h; __u32 rp_access_perm; /* MAY_READ/WRITE/EXEC */ + __u32 rp_padding; }; extern void lustre_swab_mdt_remote_perm(struct mdt_remote_perm *p); @@ -1877,18 +1814,18 @@ extern void lustre_swab_mdt_rec_setattr (struct mdt_rec_setattr *sa); #define FMODE_WRITE 00000002 #endif +#define MDS_FMODE_CLOSED 00000000 +#define MDS_FMODE_EXEC 00000004 /* IO Epoch is opened on a closed file. */ -#define FMODE_EPOCH 01000000 +#define MDS_FMODE_EPOCH 01000000 /* IO Epoch is opened on a file truncate. */ -#define FMODE_TRUNC 02000000 +#define MDS_FMODE_TRUNC 02000000 /* Size-on-MDS Attribute Update is pending. */ -#define FMODE_SOM 04000000 -#define FMODE_CLOSED 0 +#define MDS_FMODE_SOM 04000000 #define MDS_OPEN_CREATED 00000010 #define MDS_OPEN_CROSS 00000020 -#define MDS_FMODE_EXEC 00000004 #define MDS_OPEN_CREAT 00000100 #define MDS_OPEN_EXCL 00000200 #define MDS_OPEN_TRUNC 00001000 @@ -2167,13 +2104,6 @@ extern void lustre_swab_lmv_stripe_md(struct lmv_stripe_md *mea); #define MAX_HASH_SIZE 0x7fffffffffffffffULL #define MAX_HASH_HIGHEST_BIT 0x1000000000000000ULL -struct md_fld { - seqno_t mf_seq; - mdsno_t mf_mds; -}; - -extern void lustre_swab_md_fld (struct md_fld *mf); - enum fld_rpc_opc { FLD_QUERY = 900, FLD_LAST_OPC, @@ -2380,6 +2310,7 @@ typedef enum { MGS_TARGET_REG, /* whenever target starts up */ MGS_TARGET_DEL, MGS_SET_INFO, + MGS_CONFIG_READ, MGS_LAST_OPC } mgs_cmd_t; #define MGS_FIRST_OPC MGS_CONNECT @@ -2392,25 +2323,55 @@ struct mgs_send_param { }; /* We pass this info to the MGS so it can write config logs */ -#define MTI_NAME_MAXLEN 64 +#define MTI_NAME_MAXLEN 64 #define MTI_PARAM_MAXLEN 4096 -#define MTI_NIDS_MAX 32 +#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; - __u32 padding; /* 64 bit align */ + __u32 mti_instance; /* Running instance of target */ char mti_fsname[MTI_NAME_MAXLEN]; char mti_svname[MTI_NAME_MAXLEN]; char mti_uuid[sizeof(struct obd_uuid)]; __u64 mti_nids[MTI_NIDS_MAX]; /* host nids (lnet_nid_t)*/ char mti_params[MTI_PARAM_MAXLEN]; }; - extern void lustre_swab_mgs_target_info(struct mgs_target_info *oinfo); +struct mgs_nidtbl_entry { + __u64 mne_version; /* table version of this entry */ + __u32 mne_instance; /* target instance # */ + __u32 mne_index; /* target index */ + __u32 mne_length; /* length of this entry - by bytes */ + __u8 mne_type; /* target type LDD_F_SV_TYPE_OST/MDT */ + __u8 mne_nid_type; /* type of nid(mbz). for ipv6. */ + __u8 mne_nid_size; /* size of each NID, by bytes */ + __u8 mne_nid_count; /* # of NIDs in buffer */ + union { + lnet_nid_t nids[0]; /* variable size buffer for NIDs. */ + } u; +}; +extern void lustre_swab_mgs_nidtbl_entry(struct mgs_nidtbl_entry *oinfo); + +struct mgs_config_body { + char mcb_name[MTI_NAME_MAXLEN]; /* logname */ + __u64 mcb_offset; /* next index of config log to request */ + __u16 mcb_type; /* type of log: CONFIG_T_[CONFIG|RECOVER] */ + __u8 mcb_reserved; + __u8 mcb_bits; /* bits unit size of config log */ + __u32 mcb_units; /* # of units for bulk transfer */ +}; +extern void lustre_swab_mgs_config_body(struct mgs_config_body *body); + +struct mgs_config_res { + __u64 mcr_offset; /* index of last config log */ + __u64 mcr_size; /* size of the log */ +}; +extern void lustre_swab_mgs_config_res(struct mgs_config_res *body); + /* Config marker flags (in config log) */ #define CM_START 0x01 #define CM_END 0x02 @@ -2423,7 +2384,7 @@ struct cfg_marker { __u32 cm_step; /* aka config version */ __u32 cm_flags; __u32 cm_vers; /* lustre release version number */ - __u32 padding; /* 64 bit align */ + __u32 cm_padding; /* 64 bit align */ obd_time cm_createtime; /*when this record was first created */ obd_time cm_canceltime; /*when this record is no longer valid*/ char cm_tgtname[MTI_NAME_MAXLEN]; @@ -2503,7 +2464,7 @@ struct llog_rec_hdr { __u32 lrh_len; __u32 lrh_index; __u32 lrh_type; - __u32 padding; + __u32 lrh_padding; }; struct llog_rec_tail { @@ -2514,11 +2475,11 @@ struct llog_rec_tail { struct llog_logid_rec { struct llog_rec_hdr lid_hdr; struct llog_logid lid_id; - __u32 padding1; - __u32 padding2; - __u32 padding3; - __u32 padding4; - __u32 padding5; + __u32 lid_padding1; + __u32 lid_padding2; + __u32 lid_padding3; + __u32 lid_padding4; + __u32 lid_padding5; struct llog_rec_tail lid_tail; } __attribute__((packed)); @@ -2527,7 +2488,7 @@ struct llog_create_rec { struct ll_fid lcr_fid; obd_id lcr_oid; obd_count lcr_oseq; - __u32 padding; + __u32 lcr_padding; struct llog_rec_tail lcr_tail; } __attribute__((packed)); @@ -2535,7 +2496,7 @@ struct llog_orphan_rec { struct llog_rec_hdr lor_hdr; obd_id lor_oid; obd_count lor_ogen; - __u32 padding; + __u32 lor_padding; struct llog_rec_tail lor_tail; } __attribute__((packed)); @@ -2553,7 +2514,7 @@ struct llog_setattr_rec { obd_count lsr_oseq; __u32 lsr_uid; __u32 lsr_gid; - __u32 padding; + __u32 lsr_padding; struct llog_rec_tail lsr_tail; } __attribute__((packed)); @@ -2561,7 +2522,7 @@ struct llog_setattr64_rec { struct llog_rec_hdr lsr_hdr; obd_id lsr_oid; obd_count lsr_oseq; - __u32 padding; + __u32 lsr_padding; __u32 lsr_uid; __u32 lsr_uid_h; __u32 lsr_gid; @@ -2573,7 +2534,7 @@ struct llog_size_change_rec { struct llog_rec_hdr lsc_hdr; struct ll_fid lsc_fid; __u32 lsc_ioepoch; - __u32 padding; + __u32 lsc_padding; struct llog_rec_tail lsc_tail; } __attribute__((packed));