|
@@ -34,9 +34,9 @@
|
|
#define CEPH_MAX_MON 31
|
|
#define CEPH_MAX_MON 31
|
|
|
|
|
|
/*
|
|
/*
|
|
- * ceph_file_layout - describe data layout for a file/inode
|
|
|
|
|
|
+ * legacy ceph_file_layoute
|
|
*/
|
|
*/
|
|
-struct ceph_file_layout {
|
|
|
|
|
|
+struct ceph_file_layout_legacy {
|
|
/* file -> object mapping */
|
|
/* file -> object mapping */
|
|
__le32 fl_stripe_unit; /* stripe unit, in bytes. must be multiple
|
|
__le32 fl_stripe_unit; /* stripe unit, in bytes. must be multiple
|
|
of page size. */
|
|
of page size. */
|
|
@@ -53,33 +53,25 @@ struct ceph_file_layout {
|
|
__le32 fl_pg_pool; /* namespace, crush ruleset, rep level */
|
|
__le32 fl_pg_pool; /* namespace, crush ruleset, rep level */
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
-#define ceph_file_layout_su(l) ((__s32)le32_to_cpu((l).fl_stripe_unit))
|
|
|
|
-#define ceph_file_layout_stripe_count(l) \
|
|
|
|
- ((__s32)le32_to_cpu((l).fl_stripe_count))
|
|
|
|
-#define ceph_file_layout_object_size(l) ((__s32)le32_to_cpu((l).fl_object_size))
|
|
|
|
-#define ceph_file_layout_cas_hash(l) ((__s32)le32_to_cpu((l).fl_cas_hash))
|
|
|
|
-#define ceph_file_layout_object_su(l) \
|
|
|
|
- ((__s32)le32_to_cpu((l).fl_object_stripe_unit))
|
|
|
|
-#define ceph_file_layout_pg_pool(l) \
|
|
|
|
- ((__s32)le32_to_cpu((l).fl_pg_pool))
|
|
|
|
-
|
|
|
|
-static inline unsigned ceph_file_layout_stripe_width(struct ceph_file_layout *l)
|
|
|
|
-{
|
|
|
|
- return le32_to_cpu(l->fl_stripe_unit) *
|
|
|
|
- le32_to_cpu(l->fl_stripe_count);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/* "period" == bytes before i start on a new set of objects */
|
|
|
|
-static inline unsigned ceph_file_layout_period(struct ceph_file_layout *l)
|
|
|
|
-{
|
|
|
|
- return le32_to_cpu(l->fl_object_size) *
|
|
|
|
- le32_to_cpu(l->fl_stripe_count);
|
|
|
|
-}
|
|
|
|
|
|
+/*
|
|
|
|
+ * ceph_file_layout - describe data layout for a file/inode
|
|
|
|
+ */
|
|
|
|
+struct ceph_file_layout {
|
|
|
|
+ /* file -> object mapping */
|
|
|
|
+ u32 stripe_unit; /* stripe unit, in bytes */
|
|
|
|
+ u32 stripe_count; /* over this many objects */
|
|
|
|
+ u32 object_size; /* until objects are this big */
|
|
|
|
+ s64 pool_id; /* rados pool id */
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+extern int ceph_file_layout_is_valid(const struct ceph_file_layout *layout);
|
|
|
|
+extern void ceph_file_layout_from_legacy(struct ceph_file_layout *fl,
|
|
|
|
+ struct ceph_file_layout_legacy *legacy);
|
|
|
|
+extern void ceph_file_layout_to_legacy(struct ceph_file_layout *fl,
|
|
|
|
+ struct ceph_file_layout_legacy *legacy);
|
|
|
|
|
|
#define CEPH_MIN_STRIPE_UNIT 65536
|
|
#define CEPH_MIN_STRIPE_UNIT 65536
|
|
|
|
|
|
-int ceph_file_layout_is_valid(const struct ceph_file_layout *layout);
|
|
|
|
-
|
|
|
|
struct ceph_dir_layout {
|
|
struct ceph_dir_layout {
|
|
__u8 dl_dir_hash; /* see ceph_hash.h for ids */
|
|
__u8 dl_dir_hash; /* see ceph_hash.h for ids */
|
|
__u8 dl_unused1;
|
|
__u8 dl_unused1;
|
|
@@ -399,7 +391,7 @@ union ceph_mds_request_args {
|
|
__le32 flags;
|
|
__le32 flags;
|
|
} __attribute__ ((packed)) setxattr;
|
|
} __attribute__ ((packed)) setxattr;
|
|
struct {
|
|
struct {
|
|
- struct ceph_file_layout layout;
|
|
|
|
|
|
+ struct ceph_file_layout_legacy layout;
|
|
} __attribute__ ((packed)) setlayout;
|
|
} __attribute__ ((packed)) setlayout;
|
|
struct {
|
|
struct {
|
|
__u8 rule; /* currently fcntl or flock */
|
|
__u8 rule; /* currently fcntl or flock */
|
|
@@ -478,7 +470,7 @@ struct ceph_mds_reply_inode {
|
|
__le64 version; /* inode version */
|
|
__le64 version; /* inode version */
|
|
__le64 xattr_version; /* version for xattr blob */
|
|
__le64 xattr_version; /* version for xattr blob */
|
|
struct ceph_mds_reply_cap cap; /* caps issued for this inode */
|
|
struct ceph_mds_reply_cap cap; /* caps issued for this inode */
|
|
- struct ceph_file_layout layout;
|
|
|
|
|
|
+ struct ceph_file_layout_legacy layout;
|
|
struct ceph_timespec ctime, mtime, atime;
|
|
struct ceph_timespec ctime, mtime, atime;
|
|
__le32 time_warp_seq;
|
|
__le32 time_warp_seq;
|
|
__le64 size, max_size, truncate_size;
|
|
__le64 size, max_size, truncate_size;
|
|
@@ -673,7 +665,7 @@ struct ceph_mds_caps {
|
|
__le64 size, max_size, truncate_size;
|
|
__le64 size, max_size, truncate_size;
|
|
__le32 truncate_seq;
|
|
__le32 truncate_seq;
|
|
struct ceph_timespec mtime, atime, ctime;
|
|
struct ceph_timespec mtime, atime, ctime;
|
|
- struct ceph_file_layout layout;
|
|
|
|
|
|
+ struct ceph_file_layout_legacy layout;
|
|
__le32 time_warp_seq;
|
|
__le32 time_warp_seq;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|