]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: minor fixes
authorShilpa Jagannath <smanjara@redhat.com>
Tue, 21 Jul 2020 08:08:24 +0000 (13:38 +0530)
committerAdam C. Emerson <aemerson@redhat.com>
Wed, 27 Apr 2022 16:05:33 +0000 (12:05 -0400)
Signed-off-by: Shilpa Jagannath <smanjara@redhat.com>
src/rgw/rgw_reshard.cc

index a809d791b2179d2a590057560910c8e8b10c02ef..4a98832efc1fe1465fa9799c68a05dea7774410d 100644 (file)
@@ -325,28 +325,36 @@ int RGWBucketReshard::clear_index_shard_reshard_status(const DoutPrefixProvider
 static int set_target_layout(rgw::sal::RadosStore *store,
                              int new_num_shards,
                              RGWBucketInfo& bucket_info,
-                             map<string, bufferlist>& attrs,
                              const DoutPrefixProvider *dpp)
 {
   assert(!bucket_info.layout.target_index);
   bucket_info.layout.target_index.emplace();
 
   bucket_info.layout.target_index->layout.normal.num_shards = new_num_shards;
+  
+  //increment generation number
+  bucket_info.layout.target_index->gen = bucket_info.layout.current_index.gen;
+  bucket_info.layout.target_index->gen++;
 
   bucket_info.layout.resharding = rgw::BucketReshardState::InProgress;
 
-  int ret = static_cast<rgw::sal::RadosStore*>(store)->getRados()->put_bucket_instance_info(bucket_info, true, real_time(), &attrs, dpp);
+  int ret = static_cast<rgw::sal::RadosStore*>(store)->getRados()->put_bucket_instance_info(bucket_info, true, real_time(), nullptr, dpp);
   if (ret < 0) {
     cerr << "ERROR: failed to store updated bucket instance info: " << cpp_strerror(-ret) << std::endl;
     return ret;
   }
 
+  ret = store->svc()->bi->init_index(dpp, bucket_info, *(bucket_info.layout.target_index));
+  if (ret < 0) {
+      return ret;
+  }
+
   return 0;
 }
 
 int RGWBucketReshard::set_target_layout(int new_num_shards, const DoutPrefixProvider *dpp)
 {
-  return ::set_target_layout(store, new_num_shards, bucket_info, bucket_attrs, dpp);
+  return ::set_target_layout(store, new_num_shards, bucket_info, dpp);
 }
 
 int RGWBucketReshard::cancel(const DoutPrefixProvider *dpp)
@@ -367,13 +375,12 @@ class BucketInfoReshardUpdate
   const DoutPrefixProvider *dpp;
   rgw::sal::RadosStore* store;
   RGWBucketInfo& bucket_info;
-  std::map<string, bufferlist> bucket_attrs;
 
   bool in_progress{false};
 
   int set_status(rgw::BucketReshardState s, const DoutPrefixProvider *dpp) {
     bucket_info.layout.resharding = s;
-    int ret = store->getRados()->put_bucket_instance_info(bucket_info, false, real_time(), &bucket_attrs, dpp);
+    int ret = store->getRados()->put_bucket_instance_info(bucket_info, false, real_time(), nullptr, dpp);
     if (ret < 0) {
       ldpp_dout(dpp, 0) << "ERROR: failed to write bucket info, ret=" << ret << dendl;
       return ret;
@@ -383,13 +390,11 @@ class BucketInfoReshardUpdate
 
 public:
   BucketInfoReshardUpdate(const DoutPrefixProvider *_dpp,
-                          rgw::sal::RadosStore* _store,
-                         RGWBucketInfo& _bucket_info,
-                          map<string, bufferlist>& _bucket_attrs) :
+                          rgw::sal::RadosStore *_store,
+                         RGWBucketInfo& _bucket_info) :
     dpp(_dpp),
     store(_store),
-    bucket_info(_bucket_info),
-    bucket_attrs(_bucket_attrs)
+    bucket_info(_bucket_info)
   {}
 
   ~BucketInfoReshardUpdate() {
@@ -535,8 +540,7 @@ int RGWBucketReshard::do_reshard(int num_shards,
 
   // NB: destructor cleans up sharding state if reshard does not
   // complete successfully
-  BucketInfoReshardUpdate bucket_info_updater(dpp, store, bucket_info, bucket_attrs);
-
+  BucketInfoReshardUpdate bucket_info_updater(dpp, store, bucket_info);
 
   int ret = bucket_info_updater.start();
   if (ret < 0) {
@@ -544,10 +548,6 @@ int RGWBucketReshard::do_reshard(int num_shards,
     return ret;
   }
 
-  //increment generation number
-  bucket_info.layout.target_index->gen = bucket_info.layout.current_index.gen;
-  bucket_info.layout.target_index->gen++;
-
   int num_target_shards = bucket_info.layout.target_index->layout.normal.num_shards;
 
   BucketReshardManager target_shards_mgr(dpp, store, bucket_info, num_target_shards);
@@ -662,17 +662,12 @@ int RGWBucketReshard::do_reshard(int num_shards,
   bucket_info.layout.current_index = *bucket_info.layout.target_index;
   bucket_info.layout.target_index = std::nullopt; // target_layout doesn't need to exist after reshard
   bucket_info.layout.resharding = rgw::BucketReshardState::None;
-  ret = store->getRados()->put_bucket_instance_info(bucket_info, false, real_time(), &bucket_attrs, dpp);
+  ret = store->getRados()->put_bucket_instance_info(bucket_info, false, real_time(), nullptr, dpp);
   if (ret < 0) {
     ldpp_dout(dpp, -1) << "ERROR: failed writing bucket instance info: " << dendl;
       return ret;
   }
 
-  ret = store->svc()->bi->init_index(dpp, bucket_info, bucket_info.layout.current_index);
-  if (ret < 0) {
-      return ret;
-  }
-
   return 0;
   // NB: some error clean-up is done by ~BucketInfoReshardUpdate
 } // RGWBucketReshard::do_reshard
@@ -756,7 +751,7 @@ error_out:
 
   // restore old index if reshard fails
   bucket_info.layout.current_index = prev_index;
-  ret = store->getRados()->put_bucket_instance_info(bucket_info, false, real_time(), &bucket_attrs, dpp);
+  ret = store->getRados()->put_bucket_instance_info(bucket_info, false, real_time(), nullptr, dpp);
   if (ret < 0) {
     lderr(store->ctx()) << "ERROR: failed writing bucket instance info: " << dendl;
       return ret;