mirror of
https://github.com/ceph/ceph
synced 2025-01-09 20:52:09 +00:00
Merge pull request #41027 from mkogan1/wip-rgw-gc-max-objsf2
radosgw-admin: skip GC init on read-only admin ops Reviewed-by: Daniel Gryniewicz <dang@redhat.com> Reviewed-by: Matt Benjamin <mbenjamin@redhat.com>
This commit is contained in:
commit
a5dc35704c
@ -3812,17 +3812,28 @@ int main(int argc, const char **argv)
|
||||
OPT::SCRIPT_GET,
|
||||
};
|
||||
|
||||
std::set<OPT> gc_ops_list = {
|
||||
OPT::GC_LIST,
|
||||
OPT::GC_PROCESS,
|
||||
OPT::OBJECT_RM,
|
||||
OPT::BUCKET_RM, // --purge-objects
|
||||
OPT::USER_RM, // --purge-data
|
||||
OPT::OBJECTS_EXPIRE,
|
||||
OPT::OBJECTS_EXPIRE_STALE_RM,
|
||||
OPT::LC_PROCESS
|
||||
};
|
||||
|
||||
raw_storage_op = (raw_storage_ops_list.find(opt_cmd) != raw_storage_ops_list.end() ||
|
||||
raw_period_update || raw_period_pull);
|
||||
bool need_cache = readonly_ops_list.find(opt_cmd) == readonly_ops_list.end();
|
||||
bool need_gc = (gc_ops_list.find(opt_cmd) != gc_ops_list.end()) && !bypass_gc;
|
||||
|
||||
if (raw_storage_op) {
|
||||
store = StoreManager::get_raw_storage(dpp(), g_ceph_context, "rados");
|
||||
} else {
|
||||
store = StoreManager::get_storage(dpp(), g_ceph_context, "rados", false, false, false,
|
||||
false, false,
|
||||
need_cache && g_conf()->rgw_cache_enabled);
|
||||
need_cache && g_conf()->rgw_cache_enabled, need_gc);
|
||||
}
|
||||
if (!store) {
|
||||
cerr << "couldn't init storage provider" << std::endl;
|
||||
|
@ -1199,12 +1199,16 @@ int RGWRados::init_complete(const DoutPrefixProvider *dpp)
|
||||
|
||||
pools_initialized = true;
|
||||
|
||||
gc = new RGWGC();
|
||||
gc->initialize(cct, this);
|
||||
if (use_gc) {
|
||||
gc = new RGWGC();
|
||||
gc->initialize(cct, this);
|
||||
} else {
|
||||
ldpp_dout(dpp, 5) << "note: GC not initialized" << dendl;
|
||||
}
|
||||
|
||||
obj_expirer = new RGWObjectExpirer(this->store);
|
||||
|
||||
if (use_gc_thread) {
|
||||
if (use_gc_thread && use_gc) {
|
||||
gc->start_processor();
|
||||
obj_expirer->start_processor();
|
||||
}
|
||||
|
@ -401,7 +401,7 @@ class RGWRados
|
||||
SafeTimer *timer;
|
||||
|
||||
rgw::sal::RadosStore* store;
|
||||
RGWGC *gc;
|
||||
RGWGC *gc = nullptr;
|
||||
RGWLC *lc;
|
||||
RGWObjectExpirer *obj_expirer;
|
||||
bool use_gc_thread;
|
||||
@ -480,6 +480,7 @@ protected:
|
||||
RGWIndexCompletionManager *index_completion_manager{nullptr};
|
||||
|
||||
bool use_cache{false};
|
||||
bool use_gc{true};
|
||||
|
||||
int get_obj_head_ioctx(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const rgw_obj& obj, librados::IoCtx *ioctx);
|
||||
public:
|
||||
@ -501,6 +502,11 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
RGWRados& set_use_gc(bool status) {
|
||||
use_gc = status;
|
||||
return *this;
|
||||
}
|
||||
|
||||
RGWLC *get_lc() {
|
||||
return lc;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ extern "C" {
|
||||
extern rgw::sal::Store* newStore(void);
|
||||
}
|
||||
|
||||
rgw::sal::Store* StoreManager::init_storage_provider(const DoutPrefixProvider* dpp, CephContext* cct, const std::string svc, bool use_gc_thread, bool use_lc_thread, bool quota_threads, bool run_sync_thread, bool run_reshard_thread, bool use_cache)
|
||||
rgw::sal::Store* StoreManager::init_storage_provider(const DoutPrefixProvider* dpp, CephContext* cct, const std::string svc, bool use_gc_thread, bool use_lc_thread, bool quota_threads, bool run_sync_thread, bool run_reshard_thread, bool use_cache, bool use_gc)
|
||||
{
|
||||
rgw::sal::Store* store = nullptr;
|
||||
if (svc.compare("rados") == 0) {
|
||||
@ -38,6 +38,7 @@ rgw::sal::Store* StoreManager::init_storage_provider(const DoutPrefixProvider* d
|
||||
RGWRados* rados = static_cast<rgw::sal::RadosStore* >(store)->getRados();
|
||||
|
||||
if ((*rados).set_use_cache(use_cache)
|
||||
.set_use_gc(use_gc)
|
||||
.set_run_gc_thread(use_gc_thread)
|
||||
.set_run_lc_thread(use_lc_thread)
|
||||
.set_run_quota_threads(quota_threads)
|
||||
|
@ -934,16 +934,16 @@ class StoreManager {
|
||||
public:
|
||||
StoreManager() {}
|
||||
static rgw::sal::Store* get_storage(const DoutPrefixProvider* dpp, CephContext* cct, const std::string svc, bool use_gc_thread, bool use_lc_thread, bool quota_threads,
|
||||
bool run_sync_thread, bool run_reshard_thread, bool use_cache = true) {
|
||||
bool run_sync_thread, bool run_reshard_thread, bool use_cache = true, bool use_gc = true) {
|
||||
rgw::sal::Store* store = init_storage_provider(dpp, cct, svc, use_gc_thread, use_lc_thread,
|
||||
quota_threads, run_sync_thread, run_reshard_thread, use_cache);
|
||||
quota_threads, run_sync_thread, run_reshard_thread, use_cache, use_gc);
|
||||
return store;
|
||||
}
|
||||
static rgw::sal::Store* get_raw_storage(const DoutPrefixProvider* dpp, CephContext* cct, const std::string svc) {
|
||||
rgw::sal::Store* store = init_raw_storage_provider(dpp, cct, svc);
|
||||
return store;
|
||||
}
|
||||
static rgw::sal::Store* init_storage_provider(const DoutPrefixProvider* dpp, CephContext* cct, const std::string svc, bool use_gc_thread, bool use_lc_thread, bool quota_threads, bool run_sync_thread, bool run_reshard_thread, bool use_metadata_cache);
|
||||
static rgw::sal::Store* init_storage_provider(const DoutPrefixProvider* dpp, CephContext* cct, const std::string svc, bool use_gc_thread, bool use_lc_thread, bool quota_threads, bool run_sync_thread, bool run_reshard_thread, bool use_metadata_cache, bool use_gc);
|
||||
static rgw::sal::Store* init_raw_storage_provider(const DoutPrefixProvider* dpp, CephContext* cct, const std::string svc);
|
||||
static void close_storage(rgw::sal::Store* store);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user