From 0f4ddbac3bd2c0c7ded4125a50508f8cdce814ce Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 29 Jun 2010 15:11:04 -0700 Subject: [PATCH] cls: cls_read, cls_cxx_read return the number of bytes read --- src/objclass/class_api.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/objclass/class_api.cc b/src/objclass/class_api.cc index 2bfe212c98387..fd057f511c743 100644 --- a/src/objclass/class_api.cc +++ b/src/objclass/class_api.cc @@ -170,17 +170,24 @@ int cls_read(cls_method_context_t hctx, int ofs, int len, memcpy(*outdata, odata.c_str(), odata.length()); *outdatalen = odata.length(); - return r; + if (r < 0) + return r; + + return *outdatalen; } int cls_cxx_read(cls_method_context_t hctx, int ofs, int len, bufferlist *outbl) { ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx; vector ops(1); + int ret; ops[0].op.op = CEPH_OSD_OP_READ; ops[0].op.extent.offset = ofs; ops[0].op.extent.length = len; - return (*pctx)->pg->do_osd_ops(*pctx, ops, *outbl); + ret = (*pctx)->pg->do_osd_ops(*pctx, ops, *outbl); + if (ret < 0) + return ret; + return outbl->length(); } int cls_cxx_write(cls_method_context_t hctx, int ofs, int len, bufferlist *inbl) -- 2.39.5