From e06c58c9b8f585d2fe7c97d010aa0aa61c09d609 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 28 May 2014 13:59:47 -0700 Subject: [PATCH] mon: set min_size to data chunk count for erasure pools Make the min_size value meaningful for erasure pools. Signed-off-by: Sage Weil --- src/mon/OSDMonitor.cc | 13 ++++++++----- src/mon/OSDMonitor.h | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 20f88508edec6..88c147c676047 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -3075,20 +3075,23 @@ int OSDMonitor::parse_erasure_code_profile(const vector &erasure_code_pr int OSDMonitor::prepare_pool_size(const unsigned pool_type, const string &erasure_code_profile, - unsigned *size, + unsigned *size, unsigned *min_size, stringstream &ss) { int err = 0; switch (pool_type) { case pg_pool_t::TYPE_REPLICATED: *size = g_conf->osd_pool_default_size; + *min_size = g_conf->get_osd_pool_default_min_size(); break; case pg_pool_t::TYPE_ERASURE: { ErasureCodeInterfaceRef erasure_code; err = get_erasure_code(erasure_code_profile, &erasure_code, ss); - if (err == 0) + if (err == 0) { *size = erasure_code->get_chunk_count(); + *min_size = erasure_code->get_data_chunk_count(); + } } break; default: @@ -3205,8 +3208,8 @@ int OSDMonitor::prepare_new_pool(string& name, uint64_t auid, crush_ruleset_name, &crush_ruleset, ss); if (r) return r; - unsigned size; - r = prepare_pool_size(pool_type, erasure_code_profile, &size, ss); + unsigned size, min_size; + r = prepare_pool_size(pool_type, erasure_code_profile, &size, &min_size, ss); if (r) return r; uint32_t stripe_width = 0; @@ -3232,7 +3235,7 @@ int OSDMonitor::prepare_new_pool(string& name, uint64_t auid, pi->flags |= pg_pool_t::FLAG_HASHPSPOOL; pi->size = size; - pi->min_size = g_conf->get_osd_pool_default_min_size(); + pi->min_size = min_size; pi->crush_ruleset = crush_ruleset; pi->object_hash = CEPH_STR_HASH_RJENKINS; pi->set_pg_num(pg_num ? pg_num : g_conf->osd_pool_default_pg_num); diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index afc08f0c7983e..1ad05322d3f1e 100644 --- a/src/mon/OSDMonitor.h +++ b/src/mon/OSDMonitor.h @@ -263,7 +263,7 @@ private: stringstream &ss); int prepare_pool_size(const unsigned pool_type, const string &erasure_code_profile, - unsigned *size, + unsigned *size, unsigned *min_size, stringstream &ss); int prepare_pool_stripe_width(const unsigned pool_type, const string &erasure_code_profile, -- 2.39.5