Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7e319a9 authored by Alex Elder's avatar Alex Elder
Browse files

libceph: improve packing in struct ceph_osd_req_op

The layout of struct ceph_osd_req_op leaves lots of holes.
Rearranging things a little for better field alignment
reduces the size by a third.

This resolves:
    http://tracker.ceph.com/issues/4163



Signed-off-by: default avatarAlex Elder <elder@inktank.com>
Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
parent 07741308
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -157,6 +157,7 @@ struct ceph_osd_client {

struct ceph_osd_req_op {
	u16 op;           /* CEPH_OSD_OP_* */
	u32 payload_len;
	union {
		struct {
			u64 offset, length;
@@ -165,23 +166,24 @@ struct ceph_osd_req_op {
		} extent;
		struct {
			const char *name;
			u32 name_len;
			const char  *val;
			u32 name_len;
			u32 value_len;
			__u8 cmp_op;       /* CEPH_OSD_CMPXATTR_OP_* */
			__u8 cmp_mode;     /* CEPH_OSD_CMPXATTR_MODE_* */
		} xattr;
		struct {
			const char *class_name;
			__u8 class_len;
			const char *method_name;
			__u8 method_len;
			__u8 argc;
			const char *indata;
			u32 indata_len;
			__u8 class_len;
			__u8 method_len;
			__u8 argc;
		} cls;
		struct {
			u64 cookie, count;
			u64 cookie;
			u64 count;
		} pgls;
	        struct {
		        u64 snapid;
@@ -189,12 +191,11 @@ struct ceph_osd_req_op {
		struct {
			u64 cookie;
			u64 ver;
			__u8 flag;
			u32 prot_ver;
			u32 timeout;
			__u8 flag;
		} watch;
	};
	u32 payload_len;
};

extern int ceph_osdc_init(struct ceph_osd_client *osdc,