]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: store new num shards in bucket index reshard entry
authorYehuda Sadeh <yehuda@redhat.com>
Wed, 17 May 2017 23:40:16 +0000 (16:40 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Mon, 5 Jun 2017 20:17:48 +0000 (13:17 -0700)
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/cls/rgw/cls_rgw.cc
src/cls/rgw/cls_rgw_types.cc
src/cls/rgw/cls_rgw_types.h
src/rgw/rgw_reshard.cc
src/rgw/rgw_reshard.h

index 17ce100b7723e900fcfacf5ece5f04a07f93d936..ce80f4d030c76d51ecc3b864784cdb09decc8ded 100644 (file)
@@ -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);
 }
index acf782f1f48bff709f55bc01369ecf4a460f43b9..7a24a3275348eee4ea114ab2ea5d1f20b3eb1562 100644 (file)
@@ -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);
 
 }
 
index 081d3ba95cd024b78c117a0750e3bc2333c17194..7b1adf638e95d7e38825e2929b3b7ad93b91025b 100644 (file)
@@ -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 {
index 7a631410fd79daf6149d856804f0669f50c35105..8cd657d380db3106f369bb07f2038ae2a57be2a5 100644 (file)
@@ -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;
index 98be4ad2131b0535e997f2431cfffc996025e161..7b21541bd3f9e7d95120b8e31ffbd069f656f353 100644 (file)
@@ -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,