lustre_idl.h
来自「lustre 1.6.5 source code」· C头文件 代码 · 共 1,604 行 · 第 1/4 页
H
1,604 行
* OBD_CONNECT_CHANGE_QS *//* the status of lqs_flags in struct lustre_qunit_size */#define LQUOTA_QUNIT_FLAGS (LQUOTA_FLAGS_GRP | LQUOTA_FLAGS_BLK)#define QAQ_IS_GRP(qaq) ((qaq)->qaq_flags & LQUOTA_FLAGS_GRP)#define QAQ_IS_ADJBLK(qaq) ((qaq)->qaq_flags & LQUOTA_FLAGS_ADJBLK)#define QAQ_IS_ADJINO(qaq) ((qaq)->qaq_flags & LQUOTA_FLAGS_ADJINO)#define QAQ_SET_GRP(qaq) ((qaq)->qaq_flags |= LQUOTA_FLAGS_GRP)#define QAQ_SET_ADJBLK(qaq) ((qaq)->qaq_flags |= LQUOTA_FLAGS_ADJBLK)#define QAQ_SET_ADJINO(qaq) ((qaq)->qaq_flags |= LQUOTA_FLAGS_ADJINO)struct mds_rec_setattr { __u32 sa_opcode; __u32 sa_fsuid; __u32 sa_fsgid; __u32 sa_cap; __u32 sa_suppgid; __u32 sa_mode; struct ll_fid sa_fid; __u64 sa_valid; /* MDS_ATTR_* attributes */ __u64 sa_size; __u64 sa_mtime; __u64 sa_atime; __u64 sa_ctime; __u32 sa_uid; __u32 sa_gid; __u32 sa_attr_flags; __u32 sa_padding; /* also fix lustre_swab_mds_rec_setattr */};/* * Attribute flags used in mds_rec_setattr::sa_valid. * The kernel's #defines for ATTR_* should not be used over the network * since the client and MDS may run different kernels (see bug 13828) * Therefore, we should only use MDS_ATTR_* attributes for sa_valid. */#define MDS_ATTR_MODE 0x1ULL /* = 1 */#define MDS_ATTR_UID 0x2ULL /* = 2 */#define MDS_ATTR_GID 0x4ULL /* = 4 */#define MDS_ATTR_SIZE 0x8ULL /* = 8 */#define MDS_ATTR_ATIME 0x10ULL /* = 16 */#define MDS_ATTR_MTIME 0x20ULL /* = 32 */#define MDS_ATTR_CTIME 0x40ULL /* = 64 */#define MDS_ATTR_ATIME_SET 0x80ULL /* = 128 */#define MDS_ATTR_MTIME_SET 0x100ULL /* = 256 */#define MDS_ATTR_FORCE 0x200ULL /* = 512, Not a change, but a change it */#define MDS_ATTR_ATTR_FLAG 0x400ULL /* = 1024 */#define MDS_ATTR_KILL_SUID 0x800ULL /* = 2048 */#define MDS_ATTR_KILL_SGID 0x1000ULL /* = 4096 */#define MDS_ATTR_CTIME_SET 0x2000ULL /* = 8192 */#define MDS_ATTR_FROM_OPEN 0x4000ULL /* = 16384, called from open path, ie O_TRUNC */extern void lustre_swab_mds_rec_setattr (struct mds_rec_setattr *sa);#ifndef FMODE_READ#define FMODE_READ 00000001#define FMODE_WRITE 00000002#endif#define MDS_FMODE_EXEC 00000004#define MDS_OPEN_CREAT 00000100#define MDS_OPEN_EXCL 00000200#define MDS_OPEN_TRUNC 00001000#define MDS_OPEN_APPEND 00002000#define MDS_OPEN_SYNC 00010000#define MDS_OPEN_DIRECTORY 00200000#define MDS_OPEN_DELAY_CREATE 0100000000 /* delay initial object create */#define MDS_OPEN_OWNEROVERRIDE 0200000000 /* NFSD rw-reopen ro file for owner */#define MDS_OPEN_JOIN_FILE 0400000000 /* open for join file*/#define MDS_OPEN_LOCK 04000000000 /* This open requires open lock */#define MDS_OPEN_HAS_EA 010000000000 /* specify object create pattern */#define MDS_OPEN_HAS_OBJS 020000000000 /* Just set the EA the obj exist */struct mds_rec_create { __u32 cr_opcode; __u32 cr_fsuid; __u32 cr_fsgid; __u32 cr_cap; __u32 cr_flags; /* for use with open */ __u32 cr_mode; struct ll_fid cr_fid; struct ll_fid cr_replayfid; __u64 cr_time; __u64 cr_rdev; __u32 cr_suppgid; __u32 cr_padding_1; /* also fix lustre_swab_mds_rec_create */ __u32 cr_padding_2; /* also fix lustre_swab_mds_rec_create */ __u32 cr_padding_3; /* also fix lustre_swab_mds_rec_create */ __u32 cr_padding_4; /* also fix lustre_swab_mds_rec_create */ __u32 cr_padding_5; /* also fix lustre_swab_mds_rec_create */};extern void lustre_swab_mds_rec_create (struct mds_rec_create *cr);struct mds_rec_join { struct ll_fid jr_fid; __u64 jr_headsize;};extern void lustre_swab_mds_rec_join (struct mds_rec_join *jr);struct mds_rec_link { __u32 lk_opcode; __u32 lk_fsuid; __u32 lk_fsgid; __u32 lk_cap; __u32 lk_suppgid1; __u32 lk_suppgid2; struct ll_fid lk_fid1; struct ll_fid lk_fid2; __u64 lk_time; __u32 lk_padding_1; /* also fix lustre_swab_mds_rec_link */ __u32 lk_padding_2; /* also fix lustre_swab_mds_rec_link */ __u32 lk_padding_3; /* also fix lustre_swab_mds_rec_link */ __u32 lk_padding_4; /* also fix lustre_swab_mds_rec_link */};extern void lustre_swab_mds_rec_link (struct mds_rec_link *lk);struct mds_rec_unlink { __u32 ul_opcode; __u32 ul_fsuid; __u32 ul_fsgid; __u32 ul_cap; __u32 ul_suppgid; __u32 ul_mode; struct ll_fid ul_fid1; struct ll_fid ul_fid2; __u64 ul_time; __u32 ul_padding_1; /* also fix lustre_swab_mds_rec_unlink */ __u32 ul_padding_2; /* also fix lustre_swab_mds_rec_unlink */ __u32 ul_padding_3; /* also fix lustre_swab_mds_rec_unlink */ __u32 ul_padding_4; /* also fix lustre_swab_mds_rec_unlink */};extern void lustre_swab_mds_rec_unlink (struct mds_rec_unlink *ul);struct mds_rec_rename { __u32 rn_opcode; __u32 rn_fsuid; __u32 rn_fsgid; __u32 rn_cap; __u32 rn_suppgid1; __u32 rn_suppgid2; struct ll_fid rn_fid1; struct ll_fid rn_fid2; __u64 rn_time; __u32 rn_padding_1; /* also fix lustre_swab_mds_rec_rename */ __u32 rn_padding_2; /* also fix lustre_swab_mds_rec_rename */ __u32 rn_padding_3; /* also fix lustre_swab_mds_rec_rename */ __u32 rn_padding_4; /* also fix lustre_swab_mds_rec_rename */};extern void lustre_swab_mds_rec_rename (struct mds_rec_rename *rn);/* * LOV data structures */#define LOV_MIN_STRIPE_SIZE 65536 /* maximum PAGE_SIZE (ia64), power of 2 */#define LOV_MAX_STRIPE_COUNT 160 /* until bug 4424 is fixed */#define LOV_V1_INSANE_STRIPE_COUNT 65532 /* maximum stripe count bz13933 */#define LOV_MAX_UUID_BUFFER_SIZE 8192/* The size of the buffer the lov/mdc reserves for the * array of UUIDs returned by the MDS. With the current * protocol, this will limit the max number of OSTs per LOV */#define LOV_DESC_MAGIC 0xB0CCDE5C/* LOV settings descriptor (should only contain static info) */struct lov_desc { __u32 ld_tgt_count; /* how many OBD's */ __u32 ld_active_tgt_count; /* how many active */ __u32 ld_default_stripe_count; /* how many objects are used */ __u32 ld_pattern; /* default PATTERN_RAID0 */ __u64 ld_default_stripe_size; /* in bytes */ __u64 ld_default_stripe_offset; /* in bytes */ __u32 ld_padding_0; /* unused */ __u32 ld_qos_maxage; /* in second */ __u32 ld_padding_1; /* also fix lustre_swab_lov_desc */ __u32 ld_padding_2; /* also fix lustre_swab_lov_desc */ struct obd_uuid ld_uuid;};#define ld_magic ld_active_tgt_count /* for swabbing from llogs */extern void lustre_swab_lov_desc (struct lov_desc *ld);/* * LDLM requests: *//* opcodes -- MUST be distinct from OST/MDS opcodes */typedef enum { LDLM_ENQUEUE = 101, LDLM_CONVERT = 102, LDLM_CANCEL = 103, LDLM_BL_CALLBACK = 104, LDLM_CP_CALLBACK = 105, LDLM_GL_CALLBACK = 106, LDLM_LAST_OPC} ldlm_cmd_t;#define LDLM_FIRST_OPC LDLM_ENQUEUE#define RES_NAME_SIZE 4struct ldlm_res_id { __u64 name[RES_NAME_SIZE];};extern void lustre_swab_ldlm_res_id (struct ldlm_res_id *id);/* lock types */typedef enum { LCK_MINMODE = 0, LCK_EX = 1, LCK_PW = 2, LCK_PR = 4, LCK_CW = 8, LCK_CR = 16, LCK_NL = 32, LCK_GROUP = 64, LCK_MAXMODE} ldlm_mode_t;#define LCK_MODE_NUM 7typedef enum { LDLM_PLAIN = 10, LDLM_EXTENT = 11, LDLM_FLOCK = 12, LDLM_IBITS = 13, LDLM_MAX_TYPE} ldlm_type_t;#define LDLM_MIN_TYPE LDLM_PLAINstruct ldlm_extent { __u64 start; __u64 end; __u64 gid;};static inline int ldlm_extent_overlap(struct ldlm_extent *ex1, struct ldlm_extent *ex2){ return (ex1->start <= ex2->end) && (ex2->start <= ex1->end);}struct ldlm_inodebits { __u64 bits;};struct ldlm_flock { __u64 start; __u64 end; __u64 blocking_export; /* not actually used over the wire */ __u32 blocking_pid; /* not actually used over the wire */ __u32 pid;};/* it's important that the fields of the ldlm_extent structure match * the first fields of the ldlm_flock structure because there is only * one ldlm_swab routine to process the ldlm_policy_data_t union. if * this ever changes we will need to swab the union differently based * on the resource type. */typedef union { struct ldlm_extent l_extent; struct ldlm_flock l_flock; struct ldlm_inodebits l_inodebits;} ldlm_policy_data_t;extern void lustre_swab_ldlm_policy_data (ldlm_policy_data_t *d);struct ldlm_intent { __u64 opc;};extern void lustre_swab_ldlm_intent (struct ldlm_intent *i);struct ldlm_resource_desc { ldlm_type_t lr_type; __u32 lr_padding; /* also fix lustre_swab_ldlm_resource_desc */ struct ldlm_res_id lr_name;};extern void lustre_swab_ldlm_resource_desc (struct ldlm_resource_desc *r);struct ldlm_lock_desc { struct ldlm_resource_desc l_resource; ldlm_mode_t l_req_mode; ldlm_mode_t l_granted_mode; ldlm_policy_data_t l_policy_data;};extern void lustre_swab_ldlm_lock_desc (struct ldlm_lock_desc *l);#define LDLM_LOCKREQ_HANDLES 2#define LDLM_ENQUEUE_CANCEL_OFF 1struct ldlm_request { __u32 lock_flags; __u32 lock_count; struct ldlm_lock_desc lock_desc; struct lustre_handle lock_handle[LDLM_LOCKREQ_HANDLES];};/* If LDLM_ENQUEUE, 1 slot is already occupied, 1 is available. * Otherwise, 2 are available. */#define ldlm_request_bufsize(count,type) \({ \ int _avail = LDLM_LOCKREQ_HANDLES; \ _avail -= (type == LDLM_ENQUEUE ? LDLM_ENQUEUE_CANCEL_OFF : 0); \ sizeof(struct ldlm_request) + \ (count - _avail > 0 ? count - _avail : 0) * \ sizeof(struct lustre_handle); \})extern void lustre_swab_ldlm_request (struct ldlm_request *rq);struct ldlm_reply { __u32 lock_flags; __u32 lock_padding; /* also fix lustre_swab_ldlm_reply */ struct ldlm_lock_desc lock_desc; struct lustre_handle lock_handle; __u64 lock_policy_res1; __u64 lock_policy_res2;};extern void lustre_swab_ldlm_reply (struct ldlm_reply *r);/* * Opcodes for mountconf (mgs and mgc) */typedef enum { MGS_CONNECT = 250, MGS_DISCONNECT, MGS_EXCEPTION, /* node died, etc. */ MGS_TARGET_REG, /* whenever target starts up */ MGS_TARGET_DEL, MGS_SET_INFO, MGS_LAST_OPC} mgs_cmd_t;#define MGS_FIRST_OPC MGS_CONNECT#define MGS_PARAM_MAXLEN 1024#define KEY_SET_INFO "set_info"struct mgs_send_param { char mgs_param[MGS_PARAM_MAXLEN];};/* We pass this info to the MGS so it can write config logs */#define MTI_NAME_MAXLEN 64#define MTI_PARAM_MAXLEN 4096#define MTI_NIDS_MAX 32struct 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 */ 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);/* Config marker flags (in config log) */#define CM_START 0x01#define CM_END 0x02#define CM_SKIP 0x04#define CM_UPGRADE146 0x08#define CM_EXCLUDE 0x10#define CM_START_SKIP (CM_START | CM_SKIP)struct cfg_marker { __u32 cm_step; /* aka config version */ __u32 cm_flags; __u32 cm_vers; /* lustre release version number */ __u32 padding; /* 64 bit align */ time_t cm_createtime; /*when this record was first created */ time_t cm_canceltime; /*when this record is no longer valid*/ char cm_tgtname[MTI_NAME_MAXLEN]; char cm_comment[MTI_NAME_MAXLEN];};/* * Opcodes for multiple servers. */typedef enum { OBD_PING = 400, OBD_LOG_CANCEL,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?