mirror of https://gitee.com/openkylin/linux.git
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: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
This commit is contained in:
parent
077413082f
commit
e7e319a9c5
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue