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>
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h
index dd4ca4ba..4ec46c0 100644
--- a/include/linux/ceph/osd_client.h
+++ b/include/linux/ceph/osd_client.h
@@ -87,14 +87,14 @@
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_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 {