From 3e6cb97cda97d883a395833258ae74ff74527e1a Mon Sep 17 00:00:00 2001 From: Shilpa Jagannath Date: Tue, 21 Jul 2020 13:38:24 +0530 Subject: [PATCH] rgw: minor fixes Signed-off-by: Shilpa Jagannath --- src/rgw/rgw_reshard.cc | 39 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/src/rgw/rgw_reshard.cc b/src/rgw/rgw_reshard.cc index 7547b96e29af8..0fd0690f232ac 100644 --- a/src/rgw/rgw_reshard.cc +++ b/src/rgw/rgw_reshard.cc @@ -320,28 +320,36 @@ int RGWBucketReshard::clear_index_shard_reshard_status(rgw::sal::RGWRadosStore* static int set_target_layout(rgw::sal::RGWRadosStore *store, int new_num_shards, RGWBucketInfo& bucket_info, - map& 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 = store->getRados()->put_bucket_instance_info(bucket_info, true, real_time(), &attrs, dpp); + int ret = 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(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() @@ -362,13 +370,12 @@ class BucketInfoReshardUpdate const DoutPrefixProvider *dpp; rgw::sal::RGWRadosStore *store; RGWBucketInfo& bucket_info; - std::map 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) { ldout(store->ctx(), 0) << "ERROR: failed to write bucket info, ret=" << ret << dendl; return ret; @@ -379,12 +386,10 @@ class BucketInfoReshardUpdate public: BucketInfoReshardUpdate(const DoutPrefixProvider *_dpp, rgw::sal::RGWRadosStore *_store, - RGWBucketInfo& _bucket_info, - map& _bucket_attrs) : + RGWBucketInfo& _bucket_info) : dpp(_dpp), store(_store), - bucket_info(_bucket_info), - bucket_attrs(_bucket_attrs) + bucket_info(_bucket_info) {} ~BucketInfoReshardUpdate() { @@ -521,8 +526,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) { @@ -530,10 +534,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); @@ -647,17 +647,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) { lderr(store->ctx()) << "ERROR: failed writing bucket instance info: " << dendl; return ret; } - ret = store->svc()->bi->init_index(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 @@ -741,7 +736,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; -- 2.39.5