* [PATCH] libceph: improve packing in struct ceph_osd_req_op
@ 2013-02-16 16:24 Alex Elder
2013-02-16 23:23 ` Josh Durgin
0 siblings, 1 reply; 2+ messages in thread
From: Alex Elder @ 2013-02-16 16:24 UTC (permalink / raw)
To: ceph-devel
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,
--
1.7.9.5
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] libceph: improve packing in struct ceph_osd_req_op
2013-02-16 16:24 [PATCH] libceph: improve packing in struct ceph_osd_req_op Alex Elder
@ 2013-02-16 23:23 ` Josh Durgin
0 siblings, 0 replies; 2+ messages in thread
From: Josh Durgin @ 2013-02-16 23:23 UTC (permalink / raw)
To: Alex Elder; +Cc: ceph-devel
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,
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-02-16 23:23 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-16 16:24 [PATCH] libceph: improve packing in struct ceph_osd_req_op Alex Elder
2013-02-16 23:23 ` Josh Durgin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.