From: Yehuda Sadeh Date: Tue, 9 May 2017 22:38:57 +0000 (-0700) Subject: rgw: mark source bucket shards when starting reshard X-Git-Tag: v12.1.0~276^2~56 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=660a51263576993700c67da7d2cfef5b1b609a74;p=ceph-ci.git rgw: mark source bucket shards when starting reshard Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_reshard.cc b/src/rgw/rgw_reshard.cc index cac34a3e432..94ef05adf37 100644 --- a/src/rgw/rgw_reshard.cc +++ b/src/rgw/rgw_reshard.cc @@ -214,15 +214,15 @@ void RGWBucketReshard::unlock_bucket() } } -int RGWBucketReshard::init_resharding(const cls_rgw_reshard_entry& entry) +int RGWBucketReshard::init_resharding(const string& new_instance_id) { - if (entry.new_instance_id.empty()) { + if (new_instance_id.empty()) { ldout(store->ctx(), 0) << __func__ << " missing new bucket instance id" << dendl; return -EINVAL; } cls_rgw_bucket_instance_entry instance_entry; - instance_entry.new_bucket_instance_id = entry.new_instance_id; + instance_entry.set(new_instance_id); int ret = store->bucket_set_reshard(bucket_info, instance_entry); if (ret < 0) { @@ -408,6 +408,13 @@ int RGWBucketReshard::execute(int num_shards, int max_op_entries, ret = create_new_bucket_instance(num_shards, new_bucket_info); if (ret < 0) { + unlock_bucket(); + return ret; + } + + ret = init_resharding(new_bucket_info.bucket.bucket_id); + if (ret < 0) { + unlock_bucket(); return ret; } @@ -417,6 +424,7 @@ int RGWBucketReshard::execute(int num_shards, int max_op_entries, verbose, out, formatter); if (ret < 0) { + unlock_bucket(); return ret; } diff --git a/src/rgw/rgw_reshard.h b/src/rgw/rgw_reshard.h index c8dcda5dbec..da9ede7d189 100644 --- a/src/rgw/rgw_reshard.h +++ b/src/rgw/rgw_reshard.h @@ -44,7 +44,7 @@ class RGWBucketReshard { int lock_bucket(); void unlock_bucket(); - int init_resharding(const cls_rgw_reshard_entry& entry); + int init_resharding(const string& new_instance_id); int clear_resharding(); int create_new_bucket_instance(int new_num_shards,