⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lustre_idl.h

📁 非常经典的一个分布式系统
💻 H
📖 第 1 页 / 共 4 页
字号:
static inline int ll_inode_to_ext_flags(int iflags, int keep){        return keep ? (iflags & ~MDS_BFLAG_EXT_FLAGS) :                (((iflags & S_SYNC)     ? MDS_SYNC_FL      : 0) |                ((iflags & S_NOATIME)   ? MDS_NOATIME_FL   : 0) |                ((iflags & S_APPEND)    ? MDS_APPEND_FL    : 0) |#if defined(S_DIRSYNC)                ((iflags & S_DIRSYNC)   ? MDS_DIRSYNC_FL   : 0) |#endif                ((iflags & S_IMMUTABLE) ? MDS_IMMUTABLE_FL : 0));}#endifstruct 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 */        __u64          mtime;        __u64          atime;        __u64          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; /* also fix lustre_swab_mds_body */        __u32          padding_4; /* also fix lustre_swab_mds_body */};extern void lustre_swab_mds_body (struct mds_body *b);#define Q_QUOTACHECK    0x800100#define Q_INITQUOTA     0x800101        /* init slave limits */#define Q_GETOINFO      0x800102        /* get obd quota info */#define Q_GETOQUOTA     0x800103        /* get obd quotas */#define Q_TYPESET(oqc, type) \        ((oqc)->qc_type == type || (oqc)->qc_type == UGQUOTA)#define Q_GETOCMD(oqc) \        ((oqc)->qc_cmd == Q_GETOINFO || (oqc)->qc_cmd == Q_GETOQUOTA)struct obd_quotactl {        __u32                   qc_cmd;        __u32                   qc_type;        __u32                   qc_id;        __u32                   qc_stat;        struct obd_dqinfo       qc_dqinfo;        struct obd_dqblk        qc_dqblk;};extern void lustre_swab_obd_quotactl(struct obd_quotactl *q);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_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;typedef 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;};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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -