diff mbox

libceph: improve packing in struct ceph_osd_req_op

Message ID 511FB2D1.4090306@inktank.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alex Elder Feb. 16, 2013, 4:24 p.m. UTC
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.

Signed-off-by: Alex Elder <elder@inktank.com>
---
 include/linux/ceph/osd_client.h |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

Comments

Josh Durgin Feb. 16, 2013, 11:23 p.m. UTC | #1
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>

On 02/16/2013 08:24 AM, Alex Elder wrote:
> 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.
>
> Signed-off-by: Alex Elder <elder@inktank.com>
> ---
>   include/linux/ceph/osd_client.h |   15 ++++++++-------
>   1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/include/linux/ceph/osd_client.h
> b/include/linux/ceph/osd_client.h
> index 69287cc..82bf633 100644
> --- a/include/linux/ceph/osd_client.h
> +++ b/include/linux/ceph/osd_client.h
> @@ -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,
>

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/linux/ceph/osd_client.h
b/include/linux/ceph/osd_client.h
index 69287cc..82bf633 100644
--- a/include/linux/ceph/osd_client.h
+++ b/include/linux/ceph/osd_client.h
@@ -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,