Whamcloud - gitweb
LU-3677 mdt: Set HSM dirty open-for-write file when evicted.
[fs/lustre-release.git] / lustre / include / lustre / lustre_user.h
index 211d4cb..045ff2b 100644 (file)
@@ -255,9 +255,9 @@ struct ost_id {
 #define LL_IOC_LMV_SETSTRIPE           _IOWR('f', 240, struct lmv_user_md)
 #define LL_IOC_LMV_GETSTRIPE           _IOWR('f', 241, struct lmv_user_md)
 #define LL_IOC_REMOVE_ENTRY            _IOWR('f', 242, __u64)
-
 #define LL_IOC_SET_LEASE               _IOWR('f', 243, long)
 #define LL_IOC_GET_LEASE               _IO('f', 244)
+#define LL_IOC_HSM_IMPORT              _IOWR('f', 245, struct hsm_user_import)
 
 #define LL_STATFS_LMV          1
 #define LL_STATFS_LOV          2
@@ -322,6 +322,9 @@ struct ost_id {
 #define LOV_ALL_STRIPES       0xffff /* only valid for directories */
 #define LOV_V1_INSANE_STRIPE_COUNT 65532 /* maximum stripe count bz13933 */
 
+#define XATTR_LUSTRE_PREFIX    "lustre."
+#define XATTR_LUSTRE_LOV       XATTR_LUSTRE_PREFIX"lov"
+
 #define lov_user_ost_data lov_user_ost_data_v1
 struct lov_user_ost_data_v1 {     /* per-stripe data structure */
        struct ost_id l_ost_oi;   /* OST object ID */
@@ -439,10 +442,10 @@ struct obd_uuid {
         char uuid[UUID_MAX];
 };
 
-static inline int obd_uuid_equals(const struct obd_uuid *u1,
-                                  const struct obd_uuid *u2)
+static inline bool obd_uuid_equals(const struct obd_uuid *u1,
+                                  const struct obd_uuid *u2)
 {
-        return strcmp((char *)u1->uuid, (char *)u2->uuid) == 0;
+       return strcmp((char *)u1->uuid, (char *)u2->uuid) == 0;
 }
 
 static inline int obd_uuid_empty(struct obd_uuid *uuid)
@@ -457,7 +460,7 @@ static inline void obd_str2uuid(struct obd_uuid *uuid, const char *tmp)
 }
 
 /* For printf's only, make sure uuid is terminated */
-static inline char *obd_uuid2str(struct obd_uuid *uuid)
+static inline char *obd_uuid2str(const struct obd_uuid *uuid)
 {
         if (uuid->uuid[sizeof(*uuid) - 1] != '\0') {
                 /* Obviously not safe, but for printfs, no real harm done...
@@ -634,10 +637,13 @@ struct if_quotactl {
 };
 
 /* swap layout flags */
-#define        SWAP_LAYOUTS_CHECK_DV1          (1 << 0)
-#define        SWAP_LAYOUTS_CHECK_DV2          (1 << 1)
-#define        SWAP_LAYOUTS_KEEP_MTIME         (1 << 2)
-#define        SWAP_LAYOUTS_KEEP_ATIME         (1 << 3)
+#define SWAP_LAYOUTS_CHECK_DV1         (1 << 0)
+#define SWAP_LAYOUTS_CHECK_DV2         (1 << 1)
+#define SWAP_LAYOUTS_KEEP_MTIME                (1 << 2)
+#define SWAP_LAYOUTS_KEEP_ATIME                (1 << 3)
+
+/* Swap XATTR_NAME_HSM as well, only on the MDT so far */
+#define SWAP_LAYOUTS_MDS_HSM           (1 << 31)
 struct lustre_swap_layouts {
        __u64   sl_flags;
        __u32   sl_fd;
@@ -1065,7 +1071,7 @@ struct hsm_action_item {
  * \param len [IN] max buffer len
  * \retval buffer
  */
-static inline char *hai_dump_data_field(struct hsm_action_item *hai,
+static inline char *hai_dump_data_field(const struct hsm_action_item *hai,
                                         char *buffer, int len)
 {
         int i, sz, data_len;
@@ -1127,18 +1133,32 @@ static inline struct hsm_action_item * hai_next(struct hsm_action_item *hai)
 /* Return size of an hsm_action_list */
 static inline int hal_size(struct hsm_action_list *hal)
 {
-        int i, sz;
-        struct hsm_action_item *hai;
-
-        sz = sizeof(*hal) + cfs_size_round(strlen(hal->hal_fsname));
-        hai = hai_zero(hal);
-        for (i = 0 ; i < hal->hal_count ; i++) {
-                sz += cfs_size_round(hai->hai_len);
-                hai = hai_next(hai);
-        }
-        return(sz);
+       int i, sz;
+       struct hsm_action_item *hai;
+
+       sz = sizeof(*hal) + cfs_size_round(strlen(hal->hal_fsname));
+       hai = hai_zero(hal);
+       for (i = 0 ; i < hal->hal_count ; i++, hai = hai_next(hai))
+               sz += cfs_size_round(hai->hai_len);
+
+       return sz;
 }
 
+/* HSM file import
+ * describe the attributes to be set on imported file
+ */
+struct hsm_user_import {
+       __u64           hui_size;
+       __u64           hui_atime;
+       __u64           hui_mtime;
+       __u32           hui_atime_ns;
+       __u32           hui_mtime_ns;
+       __u32           hui_uid;
+       __u32           hui_gid;
+       __u32           hui_mode;
+       __u32           hui_archive_id;
+};
+
 /* Copytool progress reporting */
 #define HP_FLAG_COMPLETED 0x01
 #define HP_FLAG_RETRY     0x02
@@ -1152,12 +1172,6 @@ struct hsm_progress {
        __u32                   padding;
 };
 
-/**
- * Use by copytool during any hsm request they handled.
- * This structure is initialized by llapi_hsm_copy_start()
- * which is an helper over the ioctl() interface
- * Store Lustre, internal use only, data.
- */
 struct hsm_copy {
        __u64                   hc_data_version;
        __u16                   hc_flags;