libceph: kill off osd request r_data_in and r_data_out

Finally!  Convert the osd op data pointers into real structures, and
make the switch over to using them instead of having all ops share
the in and/or out data structures in the osd request.

Set up a new function to traverse the set of ops and release any
data associated with them (pages).

This and the patches leading up to it resolve:
    http://tracker.ceph.com/issues/4657

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
This commit is contained in:
Alex Elder 2013-04-05 01:27:12 -05:00 committed by Sage Weil
parent ec9123c567
commit 5476492fba
2 changed files with 42 additions and 46 deletions

View file

@ -87,14 +87,14 @@ struct ceph_osd_req_op {
u64 offset, length;
u64 truncate_size;
u32 truncate_seq;
struct ceph_osd_data *osd_data;
struct ceph_osd_data osd_data;
} extent;
struct {
const char *class_name;
const char *method_name;
const void *request_data;
struct ceph_osd_data *request_info;
struct ceph_osd_data *response_data;
struct ceph_osd_data request_info;
struct ceph_osd_data response_data;
u32 request_data_len;
__u8 class_len;
__u8 method_len;
@ -164,9 +164,6 @@ struct ceph_osd_request {
struct ceph_file_layout r_file_layout;
struct ceph_snap_context *r_snapc; /* snap context for writes */
struct ceph_osd_data r_data_in;
struct ceph_osd_data r_data_out;
};
struct ceph_osd_event {