Re: [PATCH] libceph: improve packing in struct ceph_osd_req_op

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Reviewed-by: Josh Durgin <josh.durgin@xxxxxxxxxxx>

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@xxxxxxxxxxx>
---
  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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux