Whamcloud - gitweb
LU-12553 mdc: polling mode for changelog reader
[fs/lustre-release.git] / lustre / include / lustre / lustreapi.h
index 0e51d25..4839fca 100644 (file)
@@ -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,6 +324,8 @@ 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,
@@ -321,6 +333,7 @@ struct find_param {
        unsigned int             fp_depth;
        unsigned int             fp_hash_type;
        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 */