From: Yehuda Sadeh Date: Thu, 10 Apr 2014 17:56:23 +0000 (-0700) Subject: rgw: update bucket / object rewrite X-Git-Tag: v0.81~110^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=82d8397ad82b47815cf8e58e225d26e7fc047a70;p=ceph.git rgw: update bucket / object rewrite Get code up to date for firefly, need to pass bucket owner for quota related functionality. Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index b452e2714c8d..5309c1c0363a 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -1842,14 +1842,16 @@ next: cerr << "ERROR: object not specified" << std::endl; return EINVAL; } - int ret = init_bucket(bucket_name, bucket); + + RGWBucketInfo bucket_info; + int ret = init_bucket(bucket_name, bucket_info, bucket); if (ret < 0) { cerr << "ERROR: could not init bucket: " << cpp_strerror(-ret) << std::endl; return -ret; } rgw_obj obj(bucket, object); - ret = store->rewrite_obj(obj); + ret = store->rewrite_obj(bucket_info.owner, obj); if (ret < 0) { cerr << "ERROR: object rewrite returned: " << cpp_strerror(-ret) << std::endl; @@ -1863,7 +1865,8 @@ next: return EINVAL; } - int ret = init_bucket(bucket_name, bucket); + RGWBucketInfo bucket_info; + int ret = init_bucket(bucket_name, bucket_info, bucket); if (ret < 0) { cerr << "ERROR: could not init bucket: " << cpp_strerror(-ret) << std::endl; return -ret; @@ -1927,7 +1930,7 @@ next: formatter->dump_string("status", "Skipped"); } else { rgw_obj obj(bucket, name); - r = store->rewrite_obj(obj); + r = store->rewrite_obj(bucket_info.owner, obj); if (r == 0) { formatter->dump_string("status", "Success"); } else { diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index ab51adf845c3..0ea7057f5bd5 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -3064,7 +3064,7 @@ public: } }; -int RGWRados::rewrite_obj(rgw_obj& obj) +int RGWRados::rewrite_obj(const string& bucket_owner, rgw_obj& obj) { map attrset; off_t ofs = 0; @@ -3083,7 +3083,7 @@ int RGWRados::rewrite_obj(rgw_obj& obj) attrset.erase(RGW_ATTR_ID_TAG); - return copy_obj_data((void *)&rctx, &handle, end, obj, obj, &mtime, attrset, RGW_OBJ_CATEGORY_MAIN, NULL, NULL); + return copy_obj_data((void *)&rctx, bucket_owner, &handle, end, obj, obj, &mtime, attrset, RGW_OBJ_CATEGORY_MAIN, NULL, NULL); } /** diff --git a/src/rgw/rgw_rados.h b/src/rgw/rgw_rados.h index 85d98362b238..b19d3bd8a029 100644 --- a/src/rgw/rgw_rados.h +++ b/src/rgw/rgw_rados.h @@ -1521,7 +1521,7 @@ public: return clone_objs(ctx, dst_obj, v, attrs, category, pmtime, truncate_dest, exclusive, xattr_cond); } - int rewrite_obj(rgw_obj& obj); + int rewrite_obj(const string& bucket_owner, rgw_obj& obj); /** * Copy an object. * dest_obj: the object to copy into