summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2012-11-13 15:39:42 -0800
committerSage Weil <sage@inktank.com>2012-11-13 15:39:42 -0800
commit97f65f6e4268e6ef485b5b3c0df5786b1d173612 (patch)
tree9ac846c9346ccaee776c0e6502a48bf4f5c18ca4
parent65961ca23b39f9928d28de0c13fe47437f935f61 (diff)
parenta0eb8919efa20240838bc35c8f50c4972eaa41c4 (diff)
downloadceph-97f65f6e4268e6ef485b5b3c0df5786b1d173612.tar.gz
Merge branch 'wip-min-size'
Reviewed-by: Sam Just <sam.just@inktank.com>
-rw-r--r--src/common/config_opts.h2
-rw-r--r--src/mon/OSDMonitor.cc7
-rw-r--r--src/mon/PGMonitor.cc7
-rw-r--r--src/osd/osd_types.cc2
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();