aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorAlex Elder <elder@inktank.com>2013-04-03 02:28:58 -0400
committerSage Weil <sage@inktank.com>2013-05-02 00:18:14 -0400
commit8c042b0df99cd06ef8473ef6e204b87b3dc80158 (patch)
tree234f410f3253401efa7266cdd67a6e87b22e8bac /include/linux
parent54d5064912649e296552f298e6472ffd37cd8f90 (diff)
libceph: add data pointers in osd op structures
An extent type osd operation currently implies that there will be corresponding data supplied in the data portion of the request (for write) or response (for read) message. Similarly, an osd class method operation implies a data item will be supplied to receive the response data from the operation. Add a ceph_osd_data pointer to each of those structures, and assign it to point to eithre the incoming or the outgoing data structure in the osd message. The data is not always available when an op is initially set up, so add two new functions to allow setting them after the op has been initialized. Begin to make use of the data item pointer available in the osd operation rather than the request data in or out structure in places where it's convenient. Add some assertions to verify pointers are always set the way they're expected to be. This is a sort of stepping stone toward really moving the data into the osd request ops, to allow for some validation before making that jump. This is the first in a series of patches that resolve: http://tracker.ceph.com/issues/4657 Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/ceph/osd_client.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h
index a9c4089894c8..ae5193550fbf 100644
--- a/include/linux/ceph/osd_client.h
+++ b/include/linux/ceph/osd_client.h
@@ -87,12 +87,14 @@ struct ceph_osd_req_op {
87 u64 offset, length; 87 u64 offset, length;
88 u64 truncate_size; 88 u64 truncate_size;
89 u32 truncate_seq; 89 u32 truncate_seq;
90 struct ceph_osd_data *osd_data;
90 } extent; 91 } extent;
91 struct { 92 struct {
92 const char *class_name; 93 const char *class_name;
93 const char *method_name; 94 const char *method_name;
94 const void *request_data; 95 const void *request_data;
95 u32 request_data_len; 96 u32 request_data_len;
97 struct ceph_osd_data *response_data;
96 __u8 class_len; 98 __u8 class_len;
97 __u8 method_len; 99 __u8 method_len;
98 __u8 argc; 100 __u8 argc;
@@ -236,10 +238,14 @@ extern void osd_req_op_extent_init(struct ceph_osd_req_op *op, u16 opcode,
236 u64 offset, u64 length, 238 u64 offset, u64 length,
237 u64 truncate_size, u32 truncate_seq); 239 u64 truncate_size, u32 truncate_seq);
238extern void osd_req_op_extent_update(struct ceph_osd_req_op *op, u64 length); 240extern void osd_req_op_extent_update(struct ceph_osd_req_op *op, u64 length);
241extern void osd_req_op_extent_osd_data(struct ceph_osd_req_op *op,
242 struct ceph_osd_data *osd_data);
239extern void osd_req_op_cls_init(struct ceph_osd_req_op *op, u16 opcode, 243extern void osd_req_op_cls_init(struct ceph_osd_req_op *op, u16 opcode,
240 const char *class, const char *method, 244 const char *class, const char *method,
241 const void *request_data, 245 const void *request_data,
242 size_t request_data_size); 246 size_t request_data_size);
247extern void osd_req_op_cls_response_data(struct ceph_osd_req_op *op,
248 struct ceph_osd_data *response_data);
243extern void osd_req_op_watch_init(struct ceph_osd_req_op *op, u16 opcode, 249extern void osd_req_op_watch_init(struct ceph_osd_req_op *op, u16 opcode,
244 u64 cookie, u64 version, int flag); 250 u64 cookie, u64 version, int flag);
245 251