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);
}
{
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);
}
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);
}
::decode(s, bl);
reshard_status = (cls_rgw_reshard_status)s;
::decode(new_bucket_instance_id, bl);
+ ::decode(num_shards, bl);
DECODE_FINISH(bl);
}
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 {
}
}
-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;
}
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) {
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;
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;
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,