summaryrefslogtreecommitdiff
path: root/src/messages
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2011-06-06 12:27:28 -0700
committerSage Weil <sage@newdream.net>2011-06-06 12:27:28 -0700
commit5cc146ea7cd033bfa5972923335425f9667d7269 (patch)
tree0af2408f32a75d6bc31128b17e0fec9da471b054 /src/messages
parent0baa108ba968e021f362057f706f94e1cf475041 (diff)
downloadceph-5cc146ea7cd033bfa5972923335425f9667d7269.tar.gz
osd: allow src_oids to be snapped
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'src/messages')
-rw-r--r--src/messages/MOSDOp.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/messages/MOSDOp.h b/src/messages/MOSDOp.h
index 37a50ed6a0d..193b5b02614 100644
--- a/src/messages/MOSDOp.h
+++ b/src/messages/MOSDOp.h
@@ -174,8 +174,10 @@ public:
for (unsigned i = 0; i < ops.size(); i++) {
if (ceph_osd_op_type_multi(ops[i].op.op)) {
- ops[i].op.payload_len = ops[i].oid.name.length();
- data.append(ops[i].oid.name);
+ bufferlist bl;
+ ::encode(ops[i].soid, bl);
+ ops[i].op.payload_len = bl.length();
+ data.append(bl);
} else {
ops[i].op.payload_len = ops[i].data.length();
data.append(ops[i].data);
@@ -329,8 +331,10 @@ struct ceph_osd_request_head {
bufferlist t;
ops[i].data.substr_of(t, off, ops[i].op.payload_len);
off += ops[i].op.payload_len;
- if (t.length())
- oid.name = t.c_str();
+ if (t.length()) {
+ bufferlist::iterator p = t.begin();
+ ::decode(ops[i].soid, p);
+ }
} else {
ops[i].data.substr_of(data, off, ops[i].op.payload_len);
off += ops[i].op.payload_len;