]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: set atomic context for copy operation src and dest
authorYehuda Sadeh <yehuda@inktank.com>
Fri, 31 Aug 2012 05:21:15 +0000 (22:21 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Sat, 15 Sep 2012 19:56:02 +0000 (12:56 -0700)
This is required so that we handle both src and dest atomically. We
also set the prefetch flag on the src object, so that we read the
first chunk along with its attrs.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_op.cc

index 17f21e4da389ae4c9f49318bfb0262e2b45c81f8..72b9d1606f4d263a39f29ef13d5b8226ce0ca21b 100644 (file)
@@ -1179,6 +1179,13 @@ int RGWCopyObj::verify_permission()
 
   dest_bucket = dest_bucket_info.bucket;
 
+  rgw_obj src_obj(src_bucket, src_object);
+  rgwstore->set_atomic(s->obj_ctx, src_obj);
+  rgwstore->set_prefetch_data(s->obj_ctx, src_obj);
+
+  rgw_obj dest_obj(dest_bucket, dest_object);
+  rgwstore->set_atomic(s->obj_ctx, dest_obj);
+
   /* check source object permissions */
   ret = read_policy(s, src_bucket_info, &src_policy, src_bucket, src_object);
   if (ret < 0)