]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: tmp objects can be removed async
authorYehuda Sadeh <yehuda@hq.newdream.net>
Sat, 24 Sep 2011 05:36:26 +0000 (22:36 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Sat, 24 Sep 2011 05:36:26 +0000 (22:36 -0700)
src/rgw/rgw_op.cc
src/rgw/rgw_rados.cc

index 5b54e9228e2902bdeba73573fa5fada980d7d30c..c73a5768ac0ba306c7361b4e3283fc691c250104 100644 (file)
@@ -741,7 +741,7 @@ void RGWPutObj::execute()
       if (ret < 0)
         goto done_err;
       if (created_obj) {
-        ret = rgwstore->delete_obj(s->obj_ctx, s->user.user_id, obj);
+        ret = rgwstore->delete_obj(NULL, s->user.user_id, obj, false);
         if (ret < 0)
           goto done;
       }
index 0f449768f75b6a3977f329cc2831edae706ecae1..061fc04671ff6e9eadb9d02fa0f8889c559de995 100644 (file)
@@ -803,6 +803,11 @@ int RGWRados::delete_obj_impl(void *ctx, std::string& id, rgw_obj& obj, bool syn
     if (r < 0)
       return r;
     r = io_ctx.operate(oid, &op);
+
+    if (r >= 0 && bucket.marker.size()) {
+      uint64_t epoch = io_ctx.get_last_version();
+      r = complete_update_index_del(bucket, obj.object, tag, epoch);
+    }
   } else {
     librados::AioCompletion *completion = rados->aio_create_completion(NULL, NULL, NULL);
     r = io_ctx.aio_operate(obj.object, completion, &op);
@@ -811,11 +816,6 @@ int RGWRados::delete_obj_impl(void *ctx, std::string& id, rgw_obj& obj, bool syn
 
   atomic_write_finish(state, r);
 
-  if (r >= 0 && bucket.marker.size()) {
-    uint64_t epoch = io_ctx.get_last_version();
-    r = complete_update_index_del(bucket, obj.object, tag, epoch);
-  }
-
   if (r < 0)
     return r;