libceph: separate read and write data

An osd request defines information about where data to be read
should be placed as well as where data to write comes from.
Currently these are represented by common fields.

Keep information about data for writing separate from data to be
read by splitting these into data_in and data_out fields.

This is the key patch in this whole series, in that it actually
identifies which osd requests generate outgoing data and which
generate incoming data.  It's less obvious (currently) that an osd
CALL op generates both outgoing and incoming data; that's the focus
of some upcoming work.

This resolves:
    http://tracker.ceph.com/issues/4127

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
This commit is contained in:
Alex Elder
2013-02-14 12:16:43 -06:00
committed by Sage Weil
parent 2ac2b7a6d4
commit 0fff87ec79
5 changed files with 105 additions and 78 deletions

View File

@@ -130,8 +130,9 @@ 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;
struct ceph_pagelist r_trail; /* trailing part of the data */
struct ceph_osd_data r_data_in;
struct ceph_osd_data r_data_out;
struct ceph_pagelist r_trail; /* trailing part of data out */
};
struct ceph_osd_event {