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 + -
显示快捷键?