X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre%2Flustreapi.h;h=a79c3212d5fcc37425becb6c2b1459dbaf48fed0;hb=2e92c57d71384d50f06baf5b6591d2809c8288b2;hp=ce5f6cebdc53d22634c7fb44950ea9dbfb9e96ee;hpb=849d7d5b1b4cabb7578c3ab5aaf271e90dd33864;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre/lustreapi.h b/lustre/include/lustre/lustreapi.h index ce5f6ce..a79c321 100644 --- a/lustre/include/lustre/lustreapi.h +++ b/lustre/include/lustre/lustreapi.h @@ -15,11 +15,7 @@ * * You should have received a copy of the GNU General Public License * version 2 along with this program; If not, see - * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ @@ -27,7 +23,7 @@ * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2011, 2014, Intel Corporation. + * Copyright (c) 2011, 2016, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -46,6 +42,10 @@ #include #include +#ifndef LL_MAXQUOTAS +#define LL_MAXQUOTAS 3 +#endif + extern bool liblustreapi_initialized; @@ -128,22 +128,31 @@ extern int llapi_get_poollist(const char *name, char **poollist, int list_size, extern int llapi_get_poolmembers(const char *poolname, char **members, int list_size, char *buffer, int buffer_size); extern int llapi_file_get_stripe(const char *path, struct lov_user_md *lum); -#define HAVE_LLAPI_FILE_LOOKUP extern int llapi_file_lookup(int dirfd, const char *name); -#define VERBOSE_COUNT 0x1 -#define VERBOSE_SIZE 0x2 -#define VERBOSE_OFFSET 0x4 -#define VERBOSE_POOL 0x8 -#define VERBOSE_DETAIL 0x10 -#define VERBOSE_OBJID 0x20 -#define VERBOSE_GENERATION 0x40 -#define VERBOSE_MDTINDEX 0x80 -#define VERBOSE_LAYOUT 0x100 -#define VERBOSE_ALL (VERBOSE_COUNT | VERBOSE_SIZE | \ +#define VERBOSE_COUNT 0x1 +#define VERBOSE_SIZE 0x2 +#define VERBOSE_OFFSET 0x4 +#define VERBOSE_POOL 0x8 +#define VERBOSE_DETAIL 0x10 +#define VERBOSE_OBJID 0x20 +#define VERBOSE_GENERATION 0x40 +#define VERBOSE_MDTINDEX 0x80 +#define VERBOSE_LAYOUT 0x100 +#define VERBOSE_COMP_COUNT 0x200 +#define VERBOSE_COMP_FLAGS 0x400 +#define VERBOSE_COMP_START 0x800 +#define VERBOSE_COMP_END 0x1000 +#define VERBOSE_COMP_ID 0x2000 +#define VERBOSE_DFID 0x4000 +#define VERBOSE_HASH_TYPE 0x8000 +#define VERBOSE_DEFAULT (VERBOSE_COUNT | VERBOSE_SIZE | \ VERBOSE_OFFSET | VERBOSE_POOL | \ - VERBOSE_OBJID | VERBOSE_GENERATION |\ - VERBOSE_LAYOUT) + VERBOSE_OBJID | VERBOSE_GENERATION | \ + VERBOSE_LAYOUT | VERBOSE_HASH_TYPE | \ + VERBOSE_COMP_COUNT | VERBOSE_COMP_FLAGS | \ + VERBOSE_COMP_START | VERBOSE_COMP_END | \ + VERBOSE_COMP_ID) struct find_param { unsigned int fp_max_depth; @@ -162,11 +171,15 @@ struct find_param { /* these need to be signed values */ int fp_size_sign:2, fp_stripe_size_sign:2, - fp_stripe_count_sign:2; + fp_stripe_count_sign:2, + fp_comp_start_sign:2, + fp_comp_end_sign:2, + fp_comp_count_sign:2, + fp_mdt_count_sign:2; unsigned long long fp_size; unsigned long long fp_size_units; - unsigned long fp_zero_end:1, + unsigned long long fp_zero_end:1, fp_recursive:1, fp_exclude_pattern:1, fp_exclude_type:1, @@ -192,7 +205,21 @@ struct find_param { fp_check_layout:1, fp_exclude_layout:1, fp_get_default_lmv:1, /* Get default LMV */ - fp_migrate:1; + fp_migrate:1, + fp_check_comp_count:1, + fp_exclude_comp_count:1, + fp_check_comp_flags:1, + fp_exclude_comp_flags:1, + fp_check_comp_start:1, + fp_exclude_comp_start:1, + fp_check_comp_end:1, + fp_exclude_comp_end:1, + fp_check_comp_id:1, + fp_exclude_comp_id:1, + fp_check_mdt_count:1, + fp_exclude_mdt_count:1, + fp_check_hash_type:1, + fp_exclude_hash_type:1; int fp_verbose; int fp_quiet; @@ -226,10 +253,20 @@ struct find_param { unsigned long long fp_stripe_count; __u32 fp_layout; + __u32 fp_comp_count; + __u32 fp_comp_flags; + __u32 fp_comp_id; + unsigned long long fp_comp_start; + unsigned long long fp_comp_start_units; + unsigned long long fp_comp_end; + unsigned long long fp_comp_end_units; + unsigned long long fp_mdt_count; + /* In-process parameters. */ unsigned long fp_got_uuids:1, fp_obds_printed:1; unsigned int fp_depth; + unsigned int fp_hash_type; }; extern int llapi_ostlist(char *path, struct find_param *param); @@ -245,6 +282,9 @@ extern int llapi_dir_create_pool(const char *name, int flags, int stripe_offset, int stripe_count, int stripe_pattern, const char *poolname); int llapi_direntry_remove(char *dname); + +int llapi_obd_fstatfs(int fd, __u32 type, __u32 index, + struct obd_statfs *stat_buf, struct obd_uuid *uuid_buf); extern int llapi_obd_statfs(char *path, __u32 type, __u32 index, struct obd_statfs *stat_buf, struct obd_uuid *uuid_buf); @@ -264,6 +304,7 @@ extern int llapi_search_mounts(const char *pathname, int index, char *mntdir, char *fsname); extern int llapi_search_fsname(const char *pathname, char *fsname); extern int llapi_getname(const char *path, char *buf, size_t size); +extern int llapi_search_fileset(const char *pathname, char *fileset); extern int llapi_search_rootpath(char *pathname, const char *fsname); extern int llapi_nodemap_exists(const char *name); @@ -277,10 +318,6 @@ extern int llapi_quotactl(char *mnt, struct if_quotactl *qctl); extern int llapi_target_iterate(int type_num, char **obd_type, void *args, llapi_cb_t cb); extern int llapi_get_connect_flags(const char *mnt, __u64 *flags); -extern int llapi_lsetfacl(int argc, char *argv[]); -extern int llapi_lgetfacl(int argc, char *argv[]); -extern int llapi_rsetfacl(int argc, char *argv[]); -extern int llapi_rgetfacl(int argc, char *argv[]); extern int llapi_cp(int argc, char *argv[]); extern int llapi_ls(int argc, char *argv[]); extern int llapi_fid2path(const char *device, const char *fidstr, char *path, @@ -300,7 +337,10 @@ extern int llapi_chomp_string(char *buf); extern int llapi_open_by_fid(const char *dir, const lustre_fid *fid, int open_flags); -extern int llapi_get_version(char *buffer, int buffer_size, char **version); +extern int llapi_get_version_string(char *version, unsigned int version_size); +/* llapi_get_version() is deprecated, use llapi_get_version_string() instead */ +extern int llapi_get_version(char *buffer, int buffer_size, char **version) + __attribute__((deprecated)); extern int llapi_get_data_version(int fd, __u64 *data_version, __u64 flags); extern int llapi_hsm_state_get_fd(int fd, struct hsm_user_state *hus); extern int llapi_hsm_state_get(const char *path, struct hsm_user_state *hus); @@ -341,6 +381,7 @@ extern int llapi_changelog_start(void **priv, enum changelog_send_flag flags, extern int llapi_changelog_fini(void **priv); extern int llapi_changelog_recv(void *priv, struct changelog_rec **rech); extern int llapi_changelog_free(struct changelog_rec **rech); +extern int llapi_changelog_get_fd(void *priv); /* Allow records up to endrec to be destroyed; requires registered id. */ extern int llapi_changelog_clear(const char *mdtname, const char *idstr, long long endrec); @@ -402,6 +443,9 @@ extern int llapi_lease_put(int fd); int llapi_group_lock(int fd, int gid); 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); /** @} llapi */ /* llapi_layout user interface */ @@ -482,6 +526,16 @@ void llapi_layout_free(struct llapi_layout *layout); #define LLAPI_LAYOUT_RAID0 0 /** +* The layout includes a specific set of OSTs on which to allocate. +*/ +#define LLAPI_LAYOUT_SPECIFIC 0x2000000000000000ULL + +/** + * A valid ost index should be less than maximum valid OST index (UINT_MAX). + */ +#define LLAPI_LAYOUT_IDX_MAX 0x00000000FFFFFFFFULL + +/** * Flags to modify how layouts are retrieved. */ /******************** Stripe Count ********************/ @@ -669,6 +723,77 @@ int llapi_layout_file_open(const char *path, int open_flags, mode_t mode, int llapi_layout_file_create(const char *path, int open_flags, int mode, const struct llapi_layout *layout); +/** + * Fetch the start and end offset of the current layout component. + */ +int llapi_layout_comp_extent_get(const struct llapi_layout *layout, + uint64_t *start, uint64_t *end); +/** + * Set the extent of current layout component. + */ +int llapi_layout_comp_extent_set(struct llapi_layout *layout, + uint64_t start, uint64_t end); +/** + * Gets the attribute flags of the current component. + */ +int llapi_layout_comp_flags_get(const struct llapi_layout *layout, + uint32_t *flags); +/** + * Sets the specified flags of the current component leaving other flags as-is. + */ +int llapi_layout_comp_flags_set(struct llapi_layout *layout, uint32_t flags); +/** + * Clears the flags specified in the flags leaving other flags as-is. + */ +int llapi_layout_comp_flags_clear(struct llapi_layout *layout, uint32_t flags); +/** + * Fetches the file-unique component ID of the current layout component. + */ +int llapi_layout_comp_id_get(const struct llapi_layout *layout, uint32_t *id); +/** + * Adds one component to the existing composite or plain layout. + */ +int llapi_layout_comp_add(struct llapi_layout *layout); +/** + * Deletes the current layout component from the composite layout. + */ +int llapi_layout_comp_del(struct llapi_layout *layout); + +enum { + LLAPI_LAYOUT_COMP_POS_NEXT = 0, + LLAPI_LAYOUT_COMP_POS_FIRST = 1, + LLAPI_LAYOUT_COMP_POS_LAST = 2 +}; + +/** + * Move the current component pointer by specified component ID. + */ +int llapi_layout_comp_move_at(struct llapi_layout *layout, uint32_t id); +/** + * Move the current component pointer to a specified position. + */ +int llapi_layout_comp_move(struct llapi_layout *layout, uint32_t pos); +/** + * Add layout components to an existing file. + */ +int llapi_layout_file_comp_add(const char *path, + const struct llapi_layout *layout); +/** + * Delete component(s) by the specified component id (accepting lcme_id + * wildcards also) from an existing file. + */ +int llapi_layout_file_comp_del(const char *path, uint32_t id); +/** + * Change flags or other parameters of the component(s) by component ID of an + * existing file. The component to be modified is specified by the + * comp->lcme_id value, which must be an unique component ID. The new + * attributes are passed in by @comp and @valid is used to specify which + * attributes in the component are going to be changed. + */ +int llapi_layout_file_comp_set(const char *path, + const struct llapi_layout *comp, + uint32_t valid); + /** @} llapi */ #endif