Message ID | 511FB2D1.4090306@inktank.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 --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,
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(-)