X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre%2Flustreapi.h;h=4839fcae8cd18bf2555e7b12d093a164972bb8f9;hb=e215002883d5620f43615013452935da8e7e3f8c;hp=f8466e33d06bc55883d3fbc58a4214faf17518ec;hpb=355c8a529a3a33a4db38e7d05bf558397a580657;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre/lustreapi.h b/lustre/include/lustre/lustreapi.h index f8466e3..4839fca 100644 --- a/lustre/include/lustre/lustreapi.h +++ b/lustre/include/lustre/lustreapi.h @@ -126,8 +126,12 @@ struct llapi_stripe_param { #define lsp_tgts lsp_osts +__u32 llapi_pattern_to_lov(uint64_t pattern); + int llapi_file_open_param(const char *name, int flags, mode_t mode, const struct llapi_stripe_param *param); +int llapi_file_create_foreign(const char *name, mode_t mode, __u32 type, + __u32 flags, char *foreign_lov); int llapi_file_create(const char *name, unsigned long long stripe_size, int stripe_offset, int stripe_count, int stripe_pattern); int llapi_file_open(const char *name, int flags, int mode, @@ -168,6 +172,7 @@ enum llapi_layout_verbose { VERBOSE_HASH_TYPE = 0x8000, VERBOSE_MIRROR_COUNT = 0x10000, VERBOSE_MIRROR_ID = 0x20000, + VERBOSE_EXT_SIZE = 0x40000, VERBOSE_DEFAULT = VERBOSE_STRIPE_COUNT | VERBOSE_STRIPE_SIZE | VERBOSE_STRIPE_OFFSET | VERBOSE_POOL | VERBOSE_OBJID | VERBOSE_GENERATION | @@ -175,7 +180,7 @@ enum llapi_layout_verbose { VERBOSE_COMP_COUNT | VERBOSE_COMP_FLAGS | VERBOSE_COMP_START | VERBOSE_COMP_END | VERBOSE_COMP_ID | VERBOSE_MIRROR_COUNT | - VERBOSE_MIRROR_ID + VERBOSE_MIRROR_ID | VERBOSE_EXT_SIZE }; /* Compatibility with original names */ #define VERBOSE_SIZE VERBOSE_STRIPE_SIZE @@ -208,7 +213,8 @@ struct find_param { fp_mirror_index_sign:2, fp_mirror_id_sign:2, fp_mdt_count_sign:2, - fp_blocks_sign:2; + fp_blocks_sign:2, + fp_ext_size_sign:2; unsigned long long fp_size; unsigned long long fp_size_units; @@ -263,7 +269,11 @@ struct find_param { fp_exclude_hash_type:1, fp_yaml:1, /* output layout in YAML */ fp_check_blocks:1, - fp_exclude_blocks:1; + fp_exclude_blocks:1, + fp_check_foreign:1, + fp_exclude_foreign:1, + fp_check_ext_size:1, /* extension size */ + fp_exclude_ext_size:1; enum llapi_layout_verbose fp_verbose; int fp_quiet; @@ -314,13 +324,16 @@ struct find_param { unsigned fp_projid; unsigned long long fp_blocks; unsigned long long fp_blocks_units; + unsigned long long fp_ext_size; + unsigned long long fp_ext_size_units; /* In-process parameters. */ unsigned long fp_got_uuids:1, fp_obds_printed:1; unsigned int fp_depth; unsigned int fp_hash_type; - unsigned int fp_time_margin; + unsigned int fp_time_margin; /* time margin in seconds */ + __u32 fp_foreign_type; }; int llapi_ostlist(char *path, struct find_param *param); @@ -336,6 +349,8 @@ int llapi_dir_set_default_lmv_stripe(const char *name, int stripe_offset, const char *pool_name); int llapi_dir_create(const char *name, mode_t mode, const struct llapi_stripe_param *param); +int llapi_dir_create_foreign(const char *name, mode_t mode, __u32 type, + __u32 flags, const char *value); int llapi_dir_create_pool(const char *name, int flags, int stripe_offset, int stripe_count, int stripe_pattern, const char *poolname); @@ -353,8 +368,12 @@ int llapi_file_fget_lov_uuid(int fd, struct obd_uuid *lov_uuid); int llapi_lov_get_uuids(int fd, struct obd_uuid *uuidp, int *ost_count); int llapi_lmv_get_uuids(int fd, struct obd_uuid *uuidp, int *mdt_count); int llapi_is_lustre_mnttype(const char *type); -int llapi_search_tgt(char *fsname, char *poolname, char *tgtname, bool is_mdt); -int llapi_search_ost(char *fsname, char *poolname, char *ostname); +int llapi_search_tgt(const char *fsname, const char *poolname, + const char *tgtname, bool is_mdt); +int llapi_search_mdt(const char *fsname, const char *poolname, + const char *mdtname); +int llapi_search_ost(const char *fsname, const char *poolname, + const char *ostname); int llapi_get_obd_count(char *mnt, int *count, int is_mdt); int llapi_parse_size(const char *optarg, unsigned long long *size, unsigned long long *size_units, int bytes_spec); @@ -390,6 +409,7 @@ int llapi_path2parent(const char *path, unsigned int linkno, struct lu_fid *parent_fid, char *name, size_t name_size); int llapi_fd2parent(int fd, unsigned int linkno, struct lu_fid *parent_fid, char *name, size_t name_size); +int llapi_rmfid(const char *path, struct fid_array *fa); int llapi_chomp_string(char *buf); int llapi_open_by_fid(const char *dir, const struct lu_fid *fid, int open_flags); @@ -442,6 +462,7 @@ int llapi_changelog_start(void **priv, enum changelog_send_flag flags, const char *mdtname, long long startrec); int llapi_changelog_fini(void **priv); int llapi_changelog_recv(void *priv, struct changelog_rec **rech); +int llapi_changelog_in_buf(void *priv); int llapi_changelog_free(struct changelog_rec **rech); int llapi_changelog_get_fd(void *priv); /* Allow records up to endrec to be destroyed; requires registered id. */ @@ -509,6 +530,23 @@ int llapi_group_unlock(int fd, int gid); /* Ladvise */ int llapi_ladvise(int fd, unsigned long long flags, int num_advise, struct llapi_lu_ladvise *ladvise); + +/* PCC */ +int llapi_pcc_attach(const char *path, __u32 id, enum lu_pcc_type type); +int llapi_pcc_attach_fid(const char *mntpath, const struct lu_fid *fid, + __u32 id, enum lu_pcc_type type); +int llapi_pcc_attach_fid_str(const char *mntpath, const char *fidstr, + __u32 id, enum lu_pcc_type type); +int llapi_pcc_detach_fd(int fd, __u32 option); +int llapi_pcc_detach_fid(const char *mntpath, const struct lu_fid *fid, + __u32 option); +int llapi_pcc_detach_fid_str(const char *mntpath, const char *fidstr, + __u32 option); +int llapi_pcc_detach_file(const char *path, __u32 option); +int llapi_pcc_state_get_fd(int fd, struct lu_pcc_state *state); +int llapi_pcc_state_get(const char *path, struct lu_pcc_state *state); +int llapi_pccdev_set(const char *mntpath, const char *cmd); +int llapi_pccdev_get(const char *mntpath); /** @} llapi */ /* llapi_layout user interface */ @@ -649,8 +687,9 @@ int llapi_layout_merge(struct llapi_layout **dst_layout, * stored using RAID0. That is, data will be split evenly and without * redundancy across all OSTs in the layout. */ -#define LLAPI_LAYOUT_RAID0 0ULL -#define LLAPI_LAYOUT_MDT 2ULL +#define LLAPI_LAYOUT_RAID0 0ULL +#define LLAPI_LAYOUT_MDT 2ULL +#define LLAPI_LAYOUT_OVERSTRIPING 4ULL /** * The layout includes a specific set of OSTs on which to allocate. @@ -703,6 +742,27 @@ int llapi_layout_stripe_size_get(const struct llapi_layout *layout, */ int llapi_layout_stripe_size_set(struct llapi_layout *layout, uint64_t size); + +/******************** Extension Size ********************/ + +/** + * Store the extension size of \a layout in \a size. + * + * \retval 0 Success. + * \retval -1 Invalid argument, errno set to EINVAL. + */ +int llapi_layout_extension_size_get(const struct llapi_layout *layout, + uint64_t *size); + +/** + * Set the extension size of \a layout to \a stripe_size. + * + * \retval 0 Success. + * \retval -1 Invalid argument, errno set to EINVAL. + */ +int llapi_layout_extension_size_set(struct llapi_layout *layout, uint64_t size); + + /******************** Stripe Pattern ********************/ /** @@ -904,6 +964,7 @@ static const struct comp_flag_name { { LCME_FL_PREF_RW, "prefer" }, { LCME_FL_OFFLINE, "offline" }, { LCME_FL_NOSYNC, "nosync" }, + { LCME_FL_EXTENSION, "extension" }, }; /** @@ -1011,6 +1072,8 @@ int llapi_mirror_copy(int fd, unsigned int src, unsigned int dst, int llapi_heat_get(int fd, struct lu_heat *heat); int llapi_heat_set(int fd, __u64 flags); +int llapi_layout_sanity(struct llapi_layout *layout, bool incomplete, bool flr); +void llapi_layout_sanity_perror(int error); /** @} llapi */