]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
class: pass context to method execution
authorYehuda Sadeh <yehuda@hq.newdream.net>
Tue, 19 May 2009 22:13:23 +0000 (15:13 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Tue, 19 May 2009 23:01:58 +0000 (16:01 -0700)
src/common/ClassHandler.cc
src/common/ClassHandler.h
src/osd/ReplicatedPG.cc

index db22d1970a5ffe7dcfe066a3b595a3f918ee5c61..5043f391f9ad0845efe1d15797e1df2647ecf3b4 100644 (file)
@@ -154,12 +154,11 @@ void ClassHandler::ClassMethod::unregister()
   cls->unregister_method(this);
 }
 
-int ClassHandler::ClassMethod::exec(bufferlist& indata, bufferlist& outdata)
+int ClassHandler::ClassMethod::exec(cls_method_context_t ctx, bufferlist& indata, bufferlist& outdata)
 {
   char *out = NULL;
   int olen;
   int ret;
-  cls_method_context_t ctx = 0;
   ret = func(ctx, indata.c_str(), indata.length(), &out, &olen);
   if (out)
     outdata.append(out, olen);
index aa11646da99fd9136405d099579d96b89d8ecc8e..1289ab93780aebe4b61169ca3a4282432be7e543 100644 (file)
@@ -24,7 +24,7 @@ public:
     struct ClassHandler::ClassData *cls;
     string name;
     cls_method_call_t func;
-    int exec(bufferlist& indata, bufferlist& outdata);
+    int exec(cls_method_context_t ctx, bufferlist& indata, bufferlist& outdata);
 
     void unregister();
   };
index fb0ada7f6c9f4603060690a7cddfd93bbe892cb2..7529eca204a7d135ca652e30eea5dbdb6bddfc7d 100644 (file)
@@ -694,7 +694,7 @@ int ReplicatedPG::do_read_ops(MOSDOp *op, OpContext& ctx,
            result = -EINVAL;
          } else {
            dout(10) << "rdcall method " << cname << "." << mname << dendl;
-           result = method->exec(indata, outdata);
+           result = method->exec((cls_method_context_t)&ctx, indata, outdata);
            p->length = outdata.length();
            data.claim_append(outdata);
          }