X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Fmd_object.h;h=a54af3ed0d7bc006ff65eef2e1e5c594cf089a88;hb=c438fba7f068b0713d96dce1f0183ec6da7ab000;hp=72e7719d021a7f2b06c4295d8d5e858b9be1a58b;hpb=8d27c92a66d63aaf8b8fbe1fc73e49263b5bed1e;p=fs%2Flustre-release.git diff --git a/lustre/include/md_object.h b/lustre/include/md_object.h index 72e7719..a54af3e 100644 --- a/lustre/include/md_object.h +++ b/lustre/include/md_object.h @@ -65,16 +65,17 @@ struct obd_export; /** metadata attributes */ enum ma_valid { - MA_INODE = 1 << 0, - MA_LOV = 1 << 1, - MA_FLAGS = 1 << 2, - MA_LMV = 1 << 3, - MA_ACL_DEF = 1 << 4, - MA_LOV_DEF = 1 << 5, - MA_HSM = 1 << 6, - MA_PFID = 1 << 7, - MA_LMV_DEF = 1 << 8, - MA_SOM = 1 << 9, + MA_INODE = BIT(0), + MA_LOV = BIT(1), + MA_FLAGS = BIT(2), + MA_LMV = BIT(3), + MA_ACL_DEF = BIT(4), + MA_LOV_DEF = BIT(5), + MA_HSM = BIT(6), + MA_PFID = BIT(7), + MA_LMV_DEF = BIT(8), + MA_SOM = BIT(9), + MA_FORCE_LOG = BIT(10), /* forced close logged in mdt_mfd_close */ }; typedef enum { @@ -90,13 +91,13 @@ typedef enum { } mdl_mode_t; typedef enum { - MDT_NUL_LOCK = 0, - MDT_REG_LOCK = (1 << 0), - MDT_PDO_LOCK = (1 << 1) + MDT_NUL_LOCK = 0, + MDT_REG_LOCK = BIT(0), + MDT_PDO_LOCK = BIT(1), } mdl_type_t; /* lfs rgetfacl permission check */ -#define MAY_RGETFACL (1 << 14) +#define MAY_RGETFACL BIT(14) /* memory structure for hsm attributes * for fields description see the on disk structure hsm_attrs @@ -136,6 +137,7 @@ struct md_attr { int ma_lmv_size; int ma_default_lmv_size; int ma_acl_size; + int ma_enable_chprojid_gid; }; /** Additional parameters for create */ @@ -166,7 +168,8 @@ struct md_op_spec { sp_cr_lookup:1, /* do lookup sanity check or not. */ sp_rm_entry:1, /* only remove name entry */ sp_permitted:1, /* do not check permission */ - sp_migrate_close:1; /* close the file during migrate */ + sp_migrate_close:1, /* close the file during migrate */ + sp_migrate_nsonly:1; /* migrate dirent only */ /** Current lock mode for parent dir where create is performing. */ mdl_mode_t sp_cr_mode; @@ -179,19 +182,35 @@ enum md_layout_opc { MD_LAYOUT_WRITE, /* FLR: write the file */ MD_LAYOUT_RESYNC, /* FLR: resync starts */ MD_LAYOUT_RESYNC_DONE, /* FLR: resync done */ + MD_LAYOUT_ATTACH, /* attach stripes */ + MD_LAYOUT_DETACH, /* detach stripes */ + MD_LAYOUT_SHRINK, /* shrink striped directory (destroy stripes) */ + MD_LAYOUT_SPLIT, /* split directory (allocate new stripes) */ + MD_LAYOUT_MAX, }; /** * Parameters for layout change API. */ struct md_layout_change { - enum md_layout_opc mlc_opc; - __u16 mlc_mirror_id; - struct layout_intent *mlc_intent; - struct lu_buf mlc_buf; - struct lustre_som_attrs mlc_som; - size_t mlc_resync_count; - __u32 *mlc_resync_ids; + enum md_layout_opc mlc_opc; + struct lu_buf mlc_buf; + union { + struct { + __u16 mlc_mirror_id; + struct layout_intent *mlc_intent; + struct lustre_som_attrs mlc_som; + size_t mlc_resync_count; + __u32 *mlc_resync_ids; + }; /* file */ + struct { + struct md_object *mlc_parent; /* parent obj in plain dir split */ + struct md_object *mlc_target; /* target obj in plain dir split */ + struct lu_attr *mlc_attr; /* target attr in plain dir split */ + const struct lu_name *mlc_name; /* target name in plain dir split */ + struct md_op_spec *mlc_spec; /* dir split spec */ + }; /* dir */ + }; }; union ldlm_policy_data; @@ -706,7 +725,7 @@ void lu_ucred_global_fini(void); #define md_cap_t(x) (x) -#define MD_CAP_TO_MASK(x) (1 << (x)) +#define MD_CAP_TO_MASK(x) BIT(x) #define md_cap_raised(c, flag) (md_cap_t(c) & MD_CAP_TO_MASK(flag))