diff options
author | Sage Weil <sage@inktank.com> | 2012-11-13 15:39:42 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-11-13 15:39:42 -0800 |
commit | 97f65f6e4268e6ef485b5b3c0df5786b1d173612 (patch) | |
tree | 9ac846c9346ccaee776c0e6502a48bf4f5c18ca4 | |
parent | 65961ca23b39f9928d28de0c13fe47437f935f61 (diff) | |
parent | a0eb8919efa20240838bc35c8f50c4972eaa41c4 (diff) | |
download | ceph-97f65f6e4268e6ef485b5b3c0df5786b1d173612.tar.gz |
Merge branch 'wip-min-size'
Reviewed-by: Sam Just <sam.just@inktank.com>
-rw-r--r-- | src/common/config_opts.h | 2 | ||||
-rw-r--r-- | src/mon/OSDMonitor.cc | 7 | ||||
-rw-r--r-- | src/mon/PGMonitor.cc | 7 | ||||
-rw-r--r-- | src/osd/osd_types.cc | 2 |
4 files changed, 14 insertions, 4 deletions
diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 4d7a08b01b7..6fb6d943658 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -300,7 +300,7 @@ OPTION(osd_min_rep, OPT_INT, 1) OPTION(osd_max_rep, OPT_INT, 10) OPTION(osd_pool_default_crush_rule, OPT_INT, 0) OPTION(osd_pool_default_size, OPT_INT, 2) -OPTION(osd_pool_default_min_size, OPT_INT, 2) +OPTION(osd_pool_default_min_size, OPT_INT, 0) // 0 means no specific default; ceph will use size-size/2 OPTION(osd_pool_default_pg_num, OPT_INT, 8) OPTION(osd_pool_default_pgp_num, OPT_INT, 8) OPTION(osd_map_dedup, OPT_BOOL, true) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 0316a906fa6..40d12de9fd5 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -1892,8 +1892,11 @@ int OSDMonitor::prepare_new_pool(string& name, uint64_t auid, int crush_rule, pending_inc.new_pools[pool].type = pg_pool_t::TYPE_REP; pending_inc.new_pools[pool].size = g_conf->osd_pool_default_size; - pending_inc.new_pools[pool].min_size = - g_conf->osd_pool_default_min_size; + if (g_conf->osd_pool_default_min_size) + pending_inc.new_pools[pool].min_size = MIN(g_conf->osd_pool_default_size, + g_conf->osd_pool_default_min_size); + else + pending_inc.new_pools[pool].min_size = g_conf->osd_pool_default_size - g_conf->osd_pool_default_size/2; if (crush_rule >= 0) pending_inc.new_pools[pool].crush_ruleset = crush_rule; else diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 14b97df97bb..f8d311235ce 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -1291,6 +1291,13 @@ void PGMonitor::get_health(list<pair<health_status_t,string> >& summary, ss << ", acting " << p->second.acting; if (p->second.stats.sum.num_objects_unfound) ss << ", " << p->second.stats.sum.num_objects_unfound << " unfound"; + if (p->second.state & PG_STATE_INCOMPLETE) { + const pg_pool_t *pi = mon->osdmon()->osdmap.get_pg_pool(p->first.pool()); + if (pi && pi->min_size > 1) { + ss << " (reducing pool " << mon->osdmon()->osdmap.get_pool_name(p->first.pool()) + << " min_size from " << (int)pi->min_size << " may help; search ceph.com/docs for 'incomplete')"; + } + } detail->push_back(make_pair(HEALTH_WARN, ss.str())); } } diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 629704d6377..1ca5adc70be 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -768,7 +768,7 @@ void pg_pool_t::decode(bufferlist::iterator& bl) if (struct_v >= 7) { ::decode(min_size, bl); } else { - min_size = MAX(size - 1, 1); + min_size = size - size/2; } DECODE_FINISH(bl); calc_pg_masks(); |