Whamcloud - gitweb
LU-10855 llog: remove obsolete llog handlers
[fs/lustre-release.git] / lustre / include / uapi / linux / lustre / lustre_idl.h
index fac28da..d368eca 100644 (file)
@@ -23,7 +23,7 @@
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2016, Intel Corporation.
+ * Copyright (c) 2011, 2017, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -564,21 +564,21 @@ static inline void lustre_handle_copy(struct lustre_handle *tgt,
        tgt->cookie = src->cookie;
 }
 
-struct lustre_handle_array {
-       unsigned int            count;
-       struct lustre_handle    handles[0];
-};
-
 /* lustre_msg struct magic.  DON'T use swabbed values of MAGIC as magic! */
-#define LUSTRE_MSG_MAGIC_V2            0x0BD00BD3
-#define LUSTRE_MSG_MAGIC_V2_SWABBED    0xD30BD00B
-#define LUSTRE_MSG_MAGIC               LUSTRE_MSG_MAGIC_V2
+enum lustre_msg_magic {
+       LUSTRE_MSG_MAGIC_V2             = 0x0BD00BD3,
+       LUSTRE_MSG_MAGIC_V2_SWABBED     = 0xD30BD00B,
+       LUSTRE_MSG_MAGIC                = LUSTRE_MSG_MAGIC_V2
+};
 
 /* flags for lm_flags */
-#define MSGHDR_AT_SUPPORT      0x1     /* adaptive timeouts, lm_cksum valid
+enum lustre_msghdr {
+       MSGHDR_AT_SUPPORT       = 0x1,  /* adaptive timeouts, lm_cksum valid
                                         * in early reply messages */
-#define MSGHDR_CKSUM_INCOMPAT18        0x2     /* compat for 1.8, needs to be set well
+       MSGHDR_CKSUM_INCOMPAT18 = 0x2,  /* compat for 1.8, needs to be set well
                                         * beyond 2.8.0 for compatibility */
+};
+
 #define lustre_msg lustre_msg_v2
 /* we depend on this structure to be 8-byte aligned */
 /* this type is only endian-adjusted in lustre_unpack_msg() */
@@ -588,7 +588,7 @@ struct lustre_msg_v2 {
        __u32 lm_magic;         /* RPC version magic = LUSTRE_MSG_MAGIC_V2 */
        __u32 lm_repsize;       /* size of preallocated reply buffer */
        __u32 lm_cksum;         /* CRC32 of ptlrpc_body early reply messages */
-       __u32 lm_flags;         /* MSGHDR_* flags */
+       __u32 lm_flags;         /* enum lustre_msghdr MSGHDR_* flags */
        __u32 lm_padding_2;     /* unused */
        __u32 lm_padding_3;     /* unused */
        __u32 lm_buflens[0];    /* length of additional buffers in bytes,
@@ -605,14 +605,16 @@ struct lustre_msg_v2 {
 #define PTL_RPC_MSG_REPLY      4713    /* normal RPC reply message */
 
 /* ptlrpc_body pb_version ((target_version << 16) | rpc_version) */
-#define PTLRPC_MSG_VERSION     0x00000003
-#define LUSTRE_VERSION_MASK    0xffff0000
-#define LUSTRE_OBD_VERSION     0x00010000
-#define LUSTRE_MDS_VERSION     0x00020000
-#define LUSTRE_OST_VERSION     0x00030000
-#define LUSTRE_DLM_VERSION     0x00040000
-#define LUSTRE_LOG_VERSION     0x00050000
-#define LUSTRE_MGS_VERSION     0x00060000
+enum lustre_msg_version {
+       PTLRPC_MSG_VERSION      = 0x00000003,
+       LUSTRE_VERSION_MASK     = 0xffff0000,
+       LUSTRE_OBD_VERSION      = 0x00010000,
+       LUSTRE_MDS_VERSION      = 0x00020000,
+       LUSTRE_OST_VERSION      = 0x00030000,
+       LUSTRE_DLM_VERSION      = 0x00040000,
+       LUSTRE_LOG_VERSION      = 0x00050000,
+       LUSTRE_MGS_VERSION      = 0x00060000,
+};
 
 /* pb_flags that apply to all request messages */
 /* #define MSG_LAST_REPLAY     0x0001 obsolete 2.0 => {REQ,LOCK}_REPLAY_DONE */
@@ -664,7 +666,7 @@ struct ptlrpc_body_v3 {
        __u64 pb_padding64_0;
        __u64 pb_padding64_1;
        __u64 pb_padding64_2;
-       char  pb_jobid[LUSTRE_JOBID_SIZE]; /* req: ASCII MPI jobid from env */
+       char  pb_jobid[LUSTRE_JOBID_SIZE]; /* req: ASCII jobid from env + NUL */
 };
 #define ptlrpc_body     ptlrpc_body_v3
 
@@ -801,8 +803,11 @@ struct ptlrpc_body_v2 {
 #define OBD_CONNECT_OBDOPACK    0x4000000000000000ULL /* compact OUT obdo */
 #define OBD_CONNECT_FLAGS2      0x8000000000000000ULL /* second flags word */
 /* ocd_connect_flags2 flags */
-#define OBD_CONNECT2_FILE_SECCTX       0x1ULL /* set file security context at create */
-#define OBD_CONNECT2_LOCKAHEAD 0x2ULL /* ladvise lockahead v2 */
+#define OBD_CONNECT2_FILE_SECCTX        0x1ULL /* set file security context at create */
+#define OBD_CONNECT2_LOCKAHEAD          0x2ULL /* ladvise lockahead v2 */
+#define OBD_CONNECT2_DIR_MIGRATE        0x4ULL /* migrate striped dir */
+#define OBD_CONNECT2_FLR               0x20ULL /* FLR support */
+#define OBD_CONNECT2_WBC_INTENTS       0x40ULL /* create/unlink/... intents for wbc, also operations under client-held parent locks */
 
 /* XXX README XXX:
  * Please DO NOT add flag values here before first ensuring that this same
@@ -853,7 +858,7 @@ struct ptlrpc_body_v2 {
                                OBD_CONNECT_GRANT_PARAM | \
                                OBD_CONNECT_SHORTIO | OBD_CONNECT_FLAGS2)
 
-#define MDT_CONNECT_SUPPORTED2 OBD_CONNECT2_FILE_SECCTX
+#define MDT_CONNECT_SUPPORTED2 (OBD_CONNECT2_FILE_SECCTX | OBD_CONNECT2_FLR)
 
 #define OST_CONNECT_SUPPORTED  (OBD_CONNECT_SRVLOCK | OBD_CONNECT_GRANT | \
                                OBD_CONNECT_REQPORTAL | OBD_CONNECT_VERSION | \
@@ -876,7 +881,7 @@ struct ptlrpc_body_v2 {
 
 #define OST_CONNECT_SUPPORTED2 OBD_CONNECT2_LOCKAHEAD
 
-#define ECHO_CONNECT_SUPPORTED 0
+#define ECHO_CONNECT_SUPPORTED (OBD_CONNECT_FID)
 #define ECHO_CONNECT_SUPPORTED2 0
 
 #define MGS_CONNECT_SUPPORTED  (OBD_CONNECT_VERSION | OBD_CONNECT_AT | \
@@ -948,18 +953,18 @@ struct obd_connect_data {
  * Please update DECLARE_CKSUM_NAME/OBD_CKSUM_ALL in obd.h when adding a new
  * algorithm and also the OBD_FL_CKSUM* flags.
  */
-typedef enum cksum_types {
+enum cksum_types {
         OBD_CKSUM_CRC32 = 0x00000001,
         OBD_CKSUM_ADLER = 0x00000002,
         OBD_CKSUM_CRC32C= 0x00000004,
-} cksum_type_t;
+};
 
 /*
  *   OST requests: OBDO & OBD request records
  */
 
 /* opcodes */
-typedef enum {
+enum ost_cmd {
         OST_REPLY      =  0,       /* reply ? */
         OST_GETATTR    =  1,
         OST_SETATTR    =  2,
@@ -981,7 +986,7 @@ typedef enum {
        OST_QUOTA_ADJUST_QUNIT = 20, /* not used since 2.4 */
        OST_LADVISE    = 21,
        OST_LAST_OPC /* must be < 33 to avoid MDS_GETATTR */
-} ost_cmd_t;
+};
 #define OST_FIRST_OPC  OST_REPLY
 
 enum obdo_flags {
@@ -1208,7 +1213,7 @@ lov_mds_md_max_stripe_count(size_t buf_size, __u32 lmm_magic)
 /*     OBD_MD_FLRMTPERM     (0x0000010000000000ULL) remote perm, obsolete */
 #define OBD_MD_FLMDSCAPA     (0x0000020000000000ULL) /* MDS capability */
 #define OBD_MD_FLOSSCAPA     (0x0000040000000000ULL) /* OSS capability */
-#define OBD_MD_FLCKSPLIT     (0x0000080000000000ULL) /* Check split on server */
+/*      OBD_MD_FLCKSPLIT     (0x0000080000000000ULL) obsolete 2.3.58*/
 #define OBD_MD_FLCROSSREF    (0x0000100000000000ULL) /* Cross-ref case */
 #define OBD_MD_FLGETATTRLOCK (0x0000200000000000ULL) /* Get IOEpoch attributes
                                                       * under lock; for xattr
@@ -1291,6 +1296,8 @@ struct hsm_state_set {
 
 #define OBD_BRW_LOCALS (OBD_BRW_LOCAL1)
 
+#define OBD_MAX_GRANT 0x7fffffffUL /* Max grant allowed to one client: 2 GiB */
+
 #define OBD_OBJECT_EOF LUSTRE_EOF
 
 #define OST_MIN_PRECREATE 32
@@ -1513,11 +1520,11 @@ struct lquota_lvb {
 #define lvb_glb_ver  lvb_id_may_rel /* current version of the global index */
 
 /* op codes */
-typedef enum {
+enum quota_cmd {
        QUOTA_DQACQ     = 601,
        QUOTA_DQREL     = 602,
        QUOTA_LAST_OPC
-} quota_cmd_t;
+};
 #define QUOTA_FIRST_OPC        QUOTA_DQACQ
 
 /*
@@ -1525,7 +1532,7 @@ typedef enum {
  */
 
 /* opcodes */
-typedef enum {
+enum mds_cmd {
        MDS_GETATTR             = 33,
        MDS_GETATTR_NAME        = 34,
        MDS_CLOSE               = 35,
@@ -1556,16 +1563,16 @@ typedef enum {
        MDS_HSM_CT_UNREGISTER   = 60,
        MDS_SWAP_LAYOUTS        = 61,
        MDS_LAST_OPC
-} mds_cmd_t;
+};
 
 #define MDS_FIRST_OPC    MDS_GETATTR
 
 
 /* opcodes for object update */
-typedef enum {
+enum update_cmd {
        OUT_UPDATE      = 1000,
        OUT_UPDATE_LAST_OPC
-} update_cmd_t;
+};
 
 #define OUT_UPDATE_FIRST_OPC    OUT_UPDATE
 
@@ -1667,6 +1674,7 @@ enum {
         * 2. If these flags needs to be stored into inode, they will be
         * stored in LMA. see LMAI_XXXX */
        LUSTRE_ORPHAN_FL = 0x00002000,
+       LUSTRE_SET_SYNC_FL = 0x00040000, /* Synchronous setattr on OSTs */
 
        LUSTRE_LMA_FL_MASKS = LUSTRE_ORPHAN_FL,
 };
@@ -1722,7 +1730,7 @@ struct mdt_body {
        __s64   mbo_atime;
        __s64   mbo_ctime;
        __u64   mbo_blocks; /* XID, in the case of MDS_READPAGE */
-       __u64   mbo_ioepoch;
+       __u64   mbo_version; /* was mbo_ioepoch before 2.11 */
        __u64   mbo_t_state; /* transient file state defined in
                              * enum md_transient_state
                              * was "ino" until 2.4.0 */
@@ -1735,7 +1743,7 @@ struct mdt_body {
        __u32   mbo_flags;   /* LUSTRE_*_FL file attributes */
        __u32   mbo_rdev;
        __u32   mbo_nlink; /* #bytes to read in the case of MDS_READPAGE */
-       __u32   mbo_unused2; /* was "generation" until 2.4.0 */
+       __u32   mbo_layout_gen; /* was "generation" until 2.4.0 */
        __u32   mbo_suppgid;
        __u32   mbo_eadatasize;
        __u32   mbo_aclsize;
@@ -1817,66 +1825,14 @@ struct mdt_rec_setattr {
 #define MDS_ATTR_BLOCKS     0x8000ULL /* = 32768 */
 #define MDS_ATTR_PROJID            0x10000ULL  /* = 65536 */
 
-#ifndef FMODE_READ
-#define FMODE_READ               00000001
-#define FMODE_WRITE              00000002
-#endif
-
-#define MDS_FMODE_CLOSED         00000000
-#define MDS_FMODE_EXEC           00000004
-/*     MDS_FMODE_EPOCH          01000000 obsolete since 2.8.0 */
-/*     MDS_FMODE_TRUNC          02000000 obsolete since 2.8.0 */
-/*     MDS_FMODE_SOM            04000000 obsolete since 2.8.0 */
-
-#define MDS_OPEN_CREATED         00000010
-#define MDS_OPEN_CROSS           00000020
-
-#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_BY_FID        040000000 /* open_by_fid for known object */
-#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.
-                                           * We do not support JOIN FILE
-                                           * anymore, reserve this flags
-                                           * just for preventing such bit
-                                           * to be reused. */
-
-#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 */
-#define MDS_OPEN_NORESTORE  0100000000000ULL /* Do not restore file at open */
-#define MDS_OPEN_NEWSTRIPE  0200000000000ULL /* New stripe needed (restripe or
-                                              * hsm restore) */
-#define MDS_OPEN_VOLATILE   0400000000000ULL /* File is volatile = created
-                                               unlinked */
-#define MDS_OPEN_LEASE    01000000000000ULL /* Open the file and grant lease
-                                             * delegation, succeed if it's not
-                                             * being opened with conflict mode.
-                                             */
-#define MDS_OPEN_RELEASE   02000000000000ULL /* Open the file for HSM release */
-
-#define MDS_OPEN_RESYNC    04000000000000ULL /* FLR: file resync */
-
-/* lustre internal open flags, which should not be set from user space */
-#define MDS_OPEN_FL_INTERNAL (MDS_OPEN_HAS_EA | MDS_OPEN_HAS_OBJS |    \
-                             MDS_OPEN_OWNEROVERRIDE | MDS_OPEN_LOCK |  \
-                             MDS_OPEN_BY_FID | MDS_OPEN_LEASE |        \
-                             MDS_OPEN_RELEASE | MDS_OPEN_RESYNC)
-
 enum mds_op_bias {
-       MDS_CHECK_SPLIT         = 1 << 0,
+/*     MDS_CHECK_SPLIT         = 1 << 0, obsolete before 2.3.58 */
        MDS_CROSS_REF           = 1 << 1,
-       MDS_VTX_BYPASS          = 1 << 2,
+/*     MDS_VTX_BYPASS          = 1 << 2, obsolete since 2.3.54 */
        MDS_PERM_BYPASS         = 1 << 3,
 /*     MDS_SOM                 = 1 << 4, obsolete since 2.8.0 */
        MDS_QUOTA_IGNORE        = 1 << 5,
-       /* Was MDS_CLOSE_CLEANUP (1 << 6), No more used */
+/*     MDS_CLOSE_CLEANUP       = 1 << 6, obsolete since 2.3.51 */
        MDS_KEEP_ORPHAN         = 1 << 7,
        MDS_RECOV_OPEN          = 1 << 8,
        MDS_DATA_MODIFIED       = 1 << 9,
@@ -1887,10 +1843,12 @@ enum mds_op_bias {
        MDS_CLOSE_LAYOUT_SWAP   = 1 << 14,
        MDS_CLOSE_LAYOUT_MERGE  = 1 << 15,
        MDS_CLOSE_RESYNC_DONE   = 1 << 16,
+       MDS_CLOSE_LAYOUT_SPLIT  = 1 << 17,
 };
 
-#define MDS_CLOSE_INTENT (MDS_HSM_RELEASE | MDS_CLOSE_LAYOUT_SWAP |    \
-                         MDS_CLOSE_LAYOUT_MERGE | MDS_CLOSE_RESYNC_DONE)
+#define MDS_CLOSE_INTENT (MDS_HSM_RELEASE | MDS_CLOSE_LAYOUT_SWAP |         \
+                         MDS_CLOSE_LAYOUT_MERGE | MDS_CLOSE_LAYOUT_SPLIT | \
+                         MDS_CLOSE_RESYNC_DONE)
 
 /* instance of mdt_reint_rec */
 struct mdt_rec_create {
@@ -2255,12 +2213,12 @@ enum fld_op {
 };
 
 /* LFSCK opcodes */
-typedef enum {
+enum lfsck_cmd {
        LFSCK_NOTIFY            = 1101,
        LFSCK_QUERY             = 1102,
        LFSCK_LAST_OPC,
-       LFSCK_FIRST_OPC         = LFSCK_NOTIFY
-} lfsck_cmd_t;
+       LFSCK_FIRST_OPC         = LFSCK_NOTIFY
+};
 
 /*
  *  LOV data structures
@@ -2296,7 +2254,7 @@ struct lov_desc {
  *   LDLM requests:
  */
 /* opcodes -- MUST be distinct from OST/MDS opcodes */
-typedef enum {
+enum ldlm_cmd {
         LDLM_ENQUEUE     = 101,
         LDLM_CONVERT     = 102,
         LDLM_CANCEL      = 103,
@@ -2305,7 +2263,7 @@ typedef enum {
         LDLM_GL_CALLBACK = 106,
         LDLM_SET_INFO    = 107,
         LDLM_LAST_OPC
-} ldlm_cmd_t;
+};
 #define LDLM_FIRST_OPC LDLM_ENQUEUE
 
 #define RES_NAME_SIZE 4
@@ -2320,7 +2278,7 @@ struct ldlm_res_id {
                        (unsigned long long)(res)->lr_name.name[3]
 
 /* lock types */
-typedef enum ldlm_mode {
+enum ldlm_mode {
        LCK_MINMODE     = 0,
        LCK_EX          = 1,
        LCK_PW          = 2,
@@ -2331,17 +2289,17 @@ typedef enum ldlm_mode {
        LCK_GROUP       = 64,
        LCK_COS         = 128,
        LCK_MAXMODE
-} ldlm_mode_t;
+};
 
 #define LCK_MODE_NUM    8
 
-typedef enum ldlm_type {
+enum ldlm_type {
        LDLM_PLAIN      = 10,
        LDLM_EXTENT     = 11,
        LDLM_FLOCK      = 12,
        LDLM_IBITS      = 13,
        LDLM_MAX_TYPE
-} ldlm_type_t;
+};
 
 #define LDLM_MIN_TYPE LDLM_PLAIN
 
@@ -2358,8 +2316,11 @@ static inline bool ldlm_extent_equal(const struct ldlm_extent *ex1,
 }
 
 struct ldlm_inodebits {
-        __u64 bits;
-       __u64 try_bits; /* optional bits to try */
+       __u64 bits;
+       union {
+               __u64 try_bits; /* optional bits to try */
+               __u64 cancel_bits; /* for lock convert */
+       };
 };
 
 struct ldlm_flock_wire {
@@ -2376,11 +2337,11 @@ struct ldlm_flock_wire {
  * this ever changes we will need to swab the union differently based
  * on the resource type. */
 
-typedef union ldlm_wire_policy_data {
+union ldlm_wire_policy_data {
        struct ldlm_extent      l_extent;
        struct ldlm_flock_wire  l_flock;
        struct ldlm_inodebits   l_inodebits;
-} ldlm_wire_policy_data_t;
+};
 
 struct barrier_lvb {
        __u32   lvb_status;
@@ -2461,7 +2422,7 @@ struct ldlm_reply {
 /*
  * Opcodes for mountconf (mgs and mgc)
  */
-typedef enum {
+enum mgs_cmd {
         MGS_CONNECT = 250,
         MGS_DISCONNECT,
         MGS_EXCEPTION,         /* node died, etc. */
@@ -2470,7 +2431,7 @@ typedef enum {
         MGS_SET_INFO,
         MGS_CONFIG_READ,
         MGS_LAST_OPC
-} mgs_cmd_t;
+};
 #define MGS_FIRST_OPC MGS_CONNECT
 
 #if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 13, 53, 0)
@@ -2563,14 +2524,13 @@ struct cfg_marker {
 /*
  * Opcodes for multiple servers.
  */
-
-typedef enum {
-        OBD_PING = 400,
-        OBD_LOG_CANCEL,
+enum obd_cmd {
+       OBD_PING = 400,
+       OBD_LOG_CANCEL, /* Obsolete since 1.5. */
        OBD_QC_CALLBACK, /* not used since 2.4 */
        OBD_IDX_READ,
         OBD_LAST_OPC
-} obd_cmd_t;
+};
 #define OBD_FIRST_OPC OBD_PING
 
 /**
@@ -2620,7 +2580,7 @@ struct llog_catid {
 #define LLOG_OP_MAGIC 0x10600000
 #define LLOG_OP_MASK  0xfff00000
 
-typedef enum {
+enum llog_op_type {
        LLOG_PAD_MAGIC          = LLOG_OP_MAGIC | 0x00000,
        OST_SZ_REC              = LLOG_OP_MAGIC | 0x00f00,
        /* OST_RAID1_REC        = LLOG_OP_MAGIC | 0x01000, never used */
@@ -2641,7 +2601,7 @@ typedef enum {
        UPDATE_REC              = LLOG_OP_MAGIC | 0xa0000,
        LLOG_HDR_MAGIC          = LLOG_OP_MAGIC | 0x45539,
        LLOG_LOGID_MAGIC        = LLOG_OP_MAGIC | 0x4553b,
-} llog_op_type;
+};
 
 #define LLOG_REC_HDR_NEEDS_SWABBING(r) \
        (((r)->lrh_type & __swab32(LLOG_OP_MASK)) == __swab32(LLOG_OP_MAGIC))
@@ -2742,8 +2702,13 @@ struct llog_size_change_rec {
 #define CHANGELOG_ALLMASK 0XFFFFFFFF
 /** default \a changelog_rec_type mask. Allow all of them, except
  * CL_ATIME since it can really be time consuming, and not necessary
- * under normal use. */
-#define CHANGELOG_DEFMASK (CHANGELOG_ALLMASK & ~(1 << CL_ATIME))
+ * under normal use.
+ * Remove also CL_OPEN, CL_GETXATTR and CL_DN_OPEN from default list as it can
+ * be costly and only necessary for audit purpose.
+ */
+#define CHANGELOG_DEFMASK (CHANGELOG_ALLMASK & \
+                          ~(1 << CL_ATIME | 1 << CL_OPEN | 1 << CL_GETXATTR | \
+                            1 << CL_DN_OPEN))
 
 /* changelog llog name, needed by client replicators */
 #define CHANGELOG_CATALOG "changelog_catalog"
@@ -2805,7 +2770,7 @@ struct llog_agent_req_rec {
                                                 * agent_req_status */
        __u32                   arr_archive_id; /**< backend archive number */
        __u64                   arr_flags;      /**< req flags */
-       __u64                   arr_compound_id;        /**< compound cookie */
+       __u64                   arr_compound_id; /**< compound cookie, ignored */
        __u64                   arr_req_create; /**< req. creation time */
        __u64                   arr_req_change; /**< req. status change time */
        struct hsm_action_item  arr_hai;        /**< req. to the agent */
@@ -2836,13 +2801,17 @@ enum llog_flag {
        LLOG_F_IS_FIXSIZE       = 0x10,
        LLOG_F_EXT_EXTRA_FLAGS  = 0x20,
        LLOG_F_EXT_X_UIDGID     = 0x40,
+       LLOG_F_EXT_X_NID        = 0x80,
+       LLOG_F_EXT_X_OMODE      = 0x100,
+       LLOG_F_EXT_X_XATTR      = 0x200,
 
        /* Note: Flags covered by LLOG_F_EXT_MASK will be inherited from
         * catlog to plain log, so do not add LLOG_F_IS_FIXSIZE here,
         * because the catlog record is usually fixed size, but its plain
         * log record can be variable */
        LLOG_F_EXT_MASK = LLOG_F_EXT_JOBID | LLOG_F_EXT_EXTRA_FLAGS |
-                         LLOG_F_EXT_X_UIDGID,
+                         LLOG_F_EXT_X_UIDGID | LLOG_F_EXT_X_NID |
+                         LLOG_F_EXT_X_OMODE | LLOG_F_EXT_X_XATTR,
 };
 
 /* On-disk header structure of each log object, stored in little endian order */
@@ -2902,17 +2871,17 @@ struct llog_cookie {
 
 /** llog protocol */
 enum llogd_rpc_ops {
-        LLOG_ORIGIN_HANDLE_CREATE       = 501,
-        LLOG_ORIGIN_HANDLE_NEXT_BLOCK   = 502,
-        LLOG_ORIGIN_HANDLE_READ_HEADER  = 503,
-        LLOG_ORIGIN_HANDLE_WRITE_REC    = 504,
-        LLOG_ORIGIN_HANDLE_CLOSE        = 505,
-        LLOG_ORIGIN_CONNECT             = 506,
-       LLOG_CATINFO                    = 507,  /* deprecated */
-        LLOG_ORIGIN_HANDLE_PREV_BLOCK   = 508,
-        LLOG_ORIGIN_HANDLE_DESTROY      = 509,  /* for destroy llog object*/
-        LLOG_LAST_OPC,
-        LLOG_FIRST_OPC                  = LLOG_ORIGIN_HANDLE_CREATE
+       LLOG_ORIGIN_HANDLE_CREATE       = 501,
+       LLOG_ORIGIN_HANDLE_NEXT_BLOCK   = 502,
+       LLOG_ORIGIN_HANDLE_READ_HEADER  = 503,
+       LLOG_ORIGIN_HANDLE_WRITE_REC    = 504, /* Obsolete by 2.1. */
+       LLOG_ORIGIN_HANDLE_CLOSE        = 505, /* Obsolete by 1.8. */
+       LLOG_ORIGIN_CONNECT             = 506, /* Obsolete by 2.4. */
+       LLOG_CATINFO                    = 507, /* Obsolete by 2.3. */
+       LLOG_ORIGIN_HANDLE_PREV_BLOCK   = 508,
+       LLOG_ORIGIN_HANDLE_DESTROY      = 509, /* Obsolete. */
+       LLOG_LAST_OPC,
+       LLOG_FIRST_OPC                  = LLOG_ORIGIN_HANDLE_CREATE
 };
 
 struct llogd_body {
@@ -3139,13 +3108,13 @@ union lu_page {
 };
 
 /* security opcodes */
-typedef enum {
+enum sec_cmd {
         SEC_CTX_INIT            = 801,
         SEC_CTX_INIT_CONT       = 802,
         SEC_CTX_FINI            = 803,
         SEC_LAST_OPC,
         SEC_FIRST_OPC           = SEC_CTX_INIT
-} sec_cmd_t;
+};
 
 /*
  * capa related definitions
@@ -3337,6 +3306,7 @@ enum update_type {
        OUT_PUNCH               = 14,
        OUT_READ                = 15,
        OUT_NOOP                = 16,
+       OUT_XATTR_LIST          = 17,
        OUT_LAST
 };
 
@@ -3440,6 +3410,8 @@ struct close_data {
        union {
                __u64                           cd_reserved[8];
                struct close_data_resync_done   cd_resync;
+               /* split close */
+               __u16                           cd_mirror_id;
        };
 };