From: Yehuda Sadeh Date: Wed, 17 May 2017 23:40:16 +0000 (-0700) Subject: rgw: store new num shards in bucket index reshard entry X-Git-Tag: ses5-milestone6~8^2~7^2~43 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=806d47329ee8a52df5bae6f3dc5c7a9f13f5bc1a;p=ceph.git rgw: store new num shards in bucket index reshard entry Signed-off-by: Yehuda Sadeh --- diff --git a/src/cls/rgw/cls_rgw.cc b/src/cls/rgw/cls_rgw.cc index 17ce100b7723..ce80f4d030c7 100644 --- a/src/cls/rgw/cls_rgw.cc +++ b/src/cls/rgw/cls_rgw.cc @@ -3637,7 +3637,7 @@ static int rgw_set_bucket_resharding(cls_method_context_t hctx, bufferlist *in, return rc; } - header.new_instance.set_status(op.entry.new_bucket_instance_id, op.entry.reshard_status); + header.new_instance.set_status(op.entry.new_bucket_instance_id, op.entry.num_shards, op.entry.reshard_status); return write_bucket_header(hctx, &header); } diff --git a/src/cls/rgw/cls_rgw_types.cc b/src/cls/rgw/cls_rgw_types.cc index acf782f1f48b..7a24a3275348 100644 --- a/src/cls/rgw/cls_rgw_types.cc +++ b/src/cls/rgw/cls_rgw_types.cc @@ -598,6 +598,7 @@ void cls_rgw_bucket_instance_entry::dump(Formatter *f) const { encode_json("reshard_status", (int)reshard_status, f); encode_json("new_bucket_instance_id", new_bucket_instance_id, f); + encode_json("num_shards", num_shards, f); } diff --git a/src/cls/rgw/cls_rgw_types.h b/src/cls/rgw/cls_rgw_types.h index 081d3ba95cd0..7b1adf638e95 100644 --- a/src/cls/rgw/cls_rgw_types.h +++ b/src/cls/rgw/cls_rgw_types.h @@ -613,11 +613,13 @@ enum cls_rgw_reshard_status { struct cls_rgw_bucket_instance_entry { cls_rgw_reshard_status reshard_status{CLS_RGW_RESHARD_NONE}; string new_bucket_instance_id; + int32_t num_shards{-1}; void encode(bufferlist& bl) const { ENCODE_START(1, 1, bl); ::encode((uint8_t)reshard_status, bl); ::encode(new_bucket_instance_id, bl); + ::encode(num_shards, bl); ENCODE_FINISH(bl); } @@ -627,6 +629,7 @@ struct cls_rgw_bucket_instance_entry { ::decode(s, bl); reshard_status = (cls_rgw_reshard_status)s; ::decode(new_bucket_instance_id, bl); + ::decode(num_shards, bl); DECODE_FINISH(bl); } @@ -638,9 +641,10 @@ struct cls_rgw_bucket_instance_entry { new_bucket_instance_id.clear(); } - void set_status(const string& new_instance_id, cls_rgw_reshard_status s) { + void set_status(const string& new_instance_id, int32_t new_num_shards, cls_rgw_reshard_status s) { reshard_status = s; new_bucket_instance_id = new_instance_id; + num_shards = new_num_shards; } bool resharding() const { diff --git a/src/rgw/rgw_reshard.cc b/src/rgw/rgw_reshard.cc index 7a631410fd79..8cd657d380db 100644 --- a/src/rgw/rgw_reshard.cc +++ b/src/rgw/rgw_reshard.cc @@ -220,7 +220,7 @@ void RGWBucketReshard::unlock_bucket() } } -int RGWBucketReshard::set_resharding_status(const string& new_instance_id, cls_rgw_reshard_status status) +int RGWBucketReshard::set_resharding_status(const string& new_instance_id, int32_t num_shards, cls_rgw_reshard_status status) { if (new_instance_id.empty()) { ldout(store->ctx(), 0) << __func__ << " missing new bucket instance id" << dendl; @@ -228,7 +228,7 @@ int RGWBucketReshard::set_resharding_status(const string& new_instance_id, cls_r } cls_rgw_bucket_instance_entry instance_entry; - instance_entry.set_status(new_instance_id, status); + instance_entry.set_status(new_instance_id, num_shards, status); int ret = store->bucket_set_reshard(bucket_info, instance_entry); if (ret < 0) { @@ -445,7 +445,7 @@ int RGWBucketReshard::execute(int num_shards, int max_op_entries, return ret; } - ret = set_resharding_status(new_bucket_info.bucket.bucket_id, CLS_RGW_RESHARD_IN_PROGRESS); + ret = set_resharding_status(new_bucket_info.bucket.bucket_id, num_shards, CLS_RGW_RESHARD_IN_PROGRESS); if (ret < 0) { unlock_bucket(); return ret; @@ -464,7 +464,7 @@ sleep(10); return ret; } - ret = set_resharding_status(new_bucket_info.bucket.bucket_id, CLS_RGW_RESHARD_DONE); + ret = set_resharding_status(new_bucket_info.bucket.bucket_id, num_shards, CLS_RGW_RESHARD_DONE); if (ret < 0) { unlock_bucket(); return ret; diff --git a/src/rgw/rgw_reshard.h b/src/rgw/rgw_reshard.h index 98be4ad2131b..7b21541bd3f9 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 set_resharding_status(const string& new_instance_id, cls_rgw_reshard_status status); + int set_resharding_status(const string& new_instance_id, int32_t num_shards, cls_rgw_reshard_status status); int clear_resharding(); int create_new_bucket_instance(int new_num_shards,