From: Orit Wasserman Date: Sun, 14 May 2017 08:03:22 +0000 (+0300) Subject: rgw: moved reshard_bucket into RGWReshard X-Git-Tag: v12.1.0~276^2~40 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1ed76a680c2b7c82444ef97f2b835498443c7659;p=ceph-ci.git rgw: moved reshard_bucket into RGWReshard Signed-off-by: Orit Wasserman --- diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index ab14c950a41..b0d3380d86d 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -2264,6 +2264,35 @@ int check_reshard_bucket_params(RGWRados *store, return 0; } +int create_new_bucket_instance(RGWRados *store, + int new_num_shards, + const RGWBucketInfo& bucket_info, + map& attrs, + RGWBucketInfo& new_bucket_info) +{ + + store->create_bucket_id(&new_bucket_info.bucket.bucket_id); + new_bucket_info.bucket.oid.clear(); + + new_bucket_info.num_shards = new_num_shards; + new_bucket_info.objv_tracker.clear(); + + int ret = store->init_bucket_index(new_bucket_info, new_bucket_info.num_shards); + if (ret < 0) { + cerr << "ERROR: failed to init new bucket indexes: " << cpp_strerror(-ret) << std::endl; + return -ret; + } + + ret = store->put_bucket_instance_info(new_bucket_info, true, real_time(), &attrs); + if (ret < 0) { + cerr << "ERROR: failed to store new bucket instance info: " << cpp_strerror(-ret) << std::endl; + return -ret; + } + + return 0; +} + + #ifdef BUILDING_FOR_EMBEDDED extern "C" int cephd_rgw_admin(int argc, const char **argv) #else @@ -5707,8 +5736,9 @@ next: return ret; } - ret = reshard_bucket(store, formatter, entry.new_num_shards, bucket, bucket_info, new_bucket_info, - max_entries, bucket_op, verbose); + ret = reshard.reshard_bucket(formatter, entry.new_num_shards, bucket, bucket_info, new_bucket_info, + max_entries, bucket_op, verbose); + formatter->flush(cout); if (ret < 0) { return ret; } diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index c49c3391bd1..f6d11f239e9 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -10809,7 +10809,6 @@ int RGWRados::bucket_index_link_olh(const RGWBucketInfo& bucket_info, RGWObjStat return r; } - rgw_zone_set zones_trace; if (_zones_trace) { zones_trace = *_zones_trace; @@ -10817,14 +10816,6 @@ int RGWRados::bucket_index_link_olh(const RGWBucketInfo& bucket_info, RGWObjStat else { zones_trace.insert(get_zone().id); - /* handle on going bucket resharding */ - BucketIndexLockGuard guard(this, bucket_info.bucket.bucket_id, bucket_info.bucket.oid, - reshard_pool_ctx); - r = reshard->block_while_resharding(bucket_info.bucket.oid, guard); - if (r < 0) { - return r; - } - BucketShard bs(this); cls_rgw_obj_key key(obj_instance.key.get_index_key_name(), obj_instance.key.instance); diff --git a/src/rgw/rgw_reshard.h b/src/rgw/rgw_reshard.h index 3c146f6fe74..bb13753fc2e 100644 --- a/src/rgw/rgw_reshard.h +++ b/src/rgw/rgw_reshard.h @@ -8,6 +8,7 @@ #include "include/rados/librados.hpp" #include "cls/rgw/cls_rgw_types.h" #include "cls/lock/cls_lock_client.h" +#include "rgw_bucket.h" class CephContext; class RGWRados; @@ -106,6 +107,16 @@ protected: int list(string& marker, uint32_t max, list& entries, bool& is_truncated); int clear_bucket_resharding(const string& bucket_instance_oid, cls_rgw_reshard_entry& entry); int block_while_resharding(RGWRados::BucketShard *bs, string *new_bucket_id); + + int reshard_bucket(Formatter *formatter, + int num_shards, + rgw_bucket& bucket, + RGWBucketInfo& bucket_info, + RGWBucketInfo& new_bucket_info, + int max_entries, + RGWBucketAdminOpState& bucket_op, + bool verbose = false); + /* reshard thread */ int process_single_shard(const std::string& shard); int inspect_all_shards();