From: Sage Weil Date: Mon, 9 Jan 2012 01:21:36 +0000 (-0800) Subject: osd: add OSDOp::outdata X-Git-Tag: v0.41~27^2~21 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c23cc237a789ef69f820e87b9108313ffdb1c285;p=ceph.git osd: add OSDOp::outdata Signed-off-by: Sage Weil --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index e12cebc221be0..af9818e7e0060 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -881,3 +881,23 @@ void merge_osd_op_vector_in_data(vector& ops, bufferlist& out) } } } + +void split_osd_op_vector_out_data(vector& ops, bufferlist& in) +{ + bufferlist::iterator datap = in.begin(); + for (unsigned i = 0; i < ops.size(); i++) { + if (ops[i].op.payload_len) { + datap.copy(ops[i].op.payload_len, ops[i].outdata); + } + } +} + +void merge_osd_op_vector_out_data(vector& ops, bufferlist& out) +{ + for (unsigned i = 0; i < ops.size(); i++) { + if (ops[i].outdata.length()) { + ops[i].op.payload_len = ops[i].outdata.length(); + out.append(ops[i].outdata); + } + } +} diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 726f48dd576ee..acc66e27e6521 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -1302,7 +1302,7 @@ WRITE_CLASS_ENCODER(ScrubMap) struct OSDOp { ceph_osd_op op; - bufferlist indata; + bufferlist indata, outdata; sobject_t soid; OSDOp() { @@ -1314,5 +1314,7 @@ ostream& operator<<(ostream& out, const OSDOp& op); void split_osd_op_vector_in_data(vector& ops, bufferlist& in); void merge_osd_op_vector_in_data(vector& ops, bufferlist& out); +void split_osd_op_vector_out_data(vector& ops, bufferlist& in); +void merge_osd_op_vector_out_data(vector& ops, bufferlist& out); #endif