#define LMV_USER_MAGIC 0x0CD30CD0 /*default lmv magic*/
+#define LOV_PATTERN_NONE 0x000
#define LOV_PATTERN_RAID0 0x001
#define LOV_PATTERN_RAID1 0x002
#define LOV_PATTERN_FIRST 0x100
#define LOV_PATTERN_F_MASK 0xffff0000
#define LOV_PATTERN_F_HOLE 0x40000000 /* there is hole in LOV EA */
#define LOV_PATTERN_F_RELEASED 0x80000000 /* HSM released file */
+#define LOV_PATTERN_DEFAULT 0xffffffff
static inline bool lov_pattern_supported(__u32 pattern)
{
LU_LADVISE_INVALID = 0,
LU_LADVISE_WILLREAD = 1,
LU_LADVISE_DONTNEED = 2,
+ LU_LADVISE_LOCKNOEXPAND = 3,
+ LU_LADVISE_LOCKAHEAD = 4,
+ LU_LADVISE_MAX
};
#define LU_LADVISE_NAMES { \
- [LU_LADVISE_WILLREAD] = "willread", \
- [LU_LADVISE_DONTNEED] = "dontneed", \
+ [LU_LADVISE_WILLREAD] = "willread", \
+ [LU_LADVISE_DONTNEED] = "dontneed", \
+ [LU_LADVISE_LOCKNOEXPAND] = "locknoexpand", \
+ [LU_LADVISE_LOCKAHEAD] = "lockahead", \
}
/* This is the userspace argument for ladvise. It is currently the same as
enum ladvise_flag {
LF_ASYNC = 0x00000001,
+ LF_UNSET = 0x00000002,
};
#define LADVISE_MAGIC 0x1ADF1CE0
-#define LF_MASK LF_ASYNC
+/* Masks of valid flags for each advice */
+#define LF_LOCKNOEXPAND_MASK LF_UNSET
+/* Flags valid for all advices not explicitly specified */
+#define LF_DEFAULT_MASK LF_ASYNC
+/* All flags */
+#define LF_MASK (LF_ASYNC | LF_UNSET)
+
+#define lla_lockahead_mode lla_value1
+#define lla_peradvice_flags lla_value2
+#define lla_lockahead_result lla_value3
/* This is the userspace argument for ladvise, corresponds to ladvise_hdr which
* is used on the wire. It is defined separately as we may need info which is
size_t sht_bytes;
};
+enum lock_mode_user {
+ MODE_READ_USER = 1,
+ MODE_WRITE_USER,
+ MODE_MAX_USER,
+};
+
+#define LOCK_MODE_NAMES { \
+ [MODE_READ_USER] = "READ",\
+ [MODE_WRITE_USER] = "WRITE"\
+}
+
+enum lockahead_results {
+ LLA_RESULT_SENT = 0,
+ LLA_RESULT_DIFFERENT,
+ LLA_RESULT_SAME,
+};
+
/** @} lustreuser */
+
#endif /* _LUSTRE_USER_H */