From 8fa73c1fc56b441cda8361f93c741382e623b4b6 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 10 Jun 2009 14:26:11 -0700 Subject: [PATCH] osd: fix encoding/decoding of [sub]op response --- src/messages/MOSDOpReply.h | 5 ----- src/messages/MOSDSubOpReply.h | 5 ----- src/testrados.c | 2 +- src/testradospp.cc | 2 +- 4 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/messages/MOSDOpReply.h b/src/messages/MOSDOpReply.h index 7585aa8366b21..55fa0e841cfbd 100644 --- a/src/messages/MOSDOpReply.h +++ b/src/messages/MOSDOpReply.h @@ -82,11 +82,8 @@ public: bufferlist::iterator p = payload.begin(); ::decode(head, p); ops.resize(head.num_ops); - unsigned off = 0; for (unsigned i = 0; i < head.num_ops; i++) { ::decode(ops[i].op, p); - ops[i].data.substr_of(data, off, ops[i].op.payload_len); - off += ops[i].op.payload_len; } ::decode_nohead(head.object_len, oid.name, p); } @@ -95,9 +92,7 @@ public: head.object_len = oid.name.length(); ::encode(head, payload); for (unsigned i = 0; i < head.num_ops; i++) { - ops[i].op.payload_len = ops[i].data.length(); ::encode(ops[i].op, payload); - data.append(ops[i].data); } ::encode_nohead(oid.name, payload); } diff --git a/src/messages/MOSDSubOpReply.h b/src/messages/MOSDSubOpReply.h index 718087aae08bc..928d380bf01e9 100644 --- a/src/messages/MOSDSubOpReply.h +++ b/src/messages/MOSDSubOpReply.h @@ -62,11 +62,8 @@ public: unsigned num_ops; ::decode(num_ops, p); ops.resize(num_ops); - unsigned off = 0; for (unsigned i = 0; i < num_ops; i++) { ::decode(ops[i].op, p); - ops[i].data.substr_of(data, off, ops[i].op.payload_len); - off += ops[i].op.payload_len; } ::decode(ack_type, p); ::decode(result, p); @@ -83,9 +80,7 @@ public: __u32 num_ops = ops.size(); ::encode(num_ops, payload); for (unsigned i = 0; i < ops.size(); i++) { - ops[i].op.payload_len = ops[i].data.length(); ::encode(ops[i].op, payload); - data.append(ops[i].data); } ::encode(ack_type, payload); ::encode(result, payload); diff --git a/src/testrados.c b/src/testrados.c index 2d0fb2690784b..6bc58c8f7e46e 100644 --- a/src/testrados.c +++ b/src/testrados.c @@ -38,7 +38,7 @@ int main(int argc, const char **argv) printf("open pool result = %d, pool = %p\n", r, pool); rados_write(pool, oid, 0, buf, strlen(buf) + 1); - rados_exec(pool, oid, "test", "foo", buf, strlen(buf) + 1, buf, 128); + rados_exec(pool, oid, "crypto", "md5", buf, strlen(buf) + 1, buf, 128); printf("exec result=%s\n", buf); int size = rados_read(pool, oid, 0, buf2, 128); printf("read result=%s\n", buf2); diff --git a/src/testradospp.cc b/src/testradospp.cc index cdf8363a1a5e4..2ba4735248896 100644 --- a/src/testradospp.cc +++ b/src/testradospp.cc @@ -55,7 +55,7 @@ int main(int argc, const char **argv) rados.write(pool, oid, 0, bl, bl.length() - 3); rados.write(pool, oid, 0, bl, bl.length() - 4); r = rados.exec(pool, oid, "crypto", "md5", bl, bl2); - cout << "exec returned " << r << std::endl; + cout << "exec returned " << r << " buf size=" << bl2.length() << std::endl; const unsigned char *md5 = (const unsigned char *)bl2.c_str(); char md5_str[bl2.length()*2 + 1]; buf_to_hex(md5, bl2.length(), md5_str); -- 2.39.5