summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2012-11-29 11:28:25 -0800
committerSamuel Just <sam.just@inktank.com>2012-11-29 13:51:52 -0800
commit8218d8ac0bfe2ba43b3b43187e499236ff802c91 (patch)
tree53b5f8c96d28fbe5b77727438826300cfdc92170
parentf4f93f82e5688b11de6f2a4fe3c0a30484796cb5 (diff)
downloadceph-8218d8ac0bfe2ba43b3b43187e499236ff802c91.tar.gz
OSD: get_or_create_pg return null if pool is gone
Signed-off-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/osd/OSD.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index bd5501f0857..9282f4d632a 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -1577,6 +1577,8 @@ PG *OSD::get_or_create_pg(const pg_info_t& info, pg_interval_map_t& pi,
if (!_have_pg(info.pgid)) {
// same primary?
+ if (!osdmap->have_pg_pool(info.pgid.pool()))
+ return 0;
vector<int> up, acting;
osdmap->pg_to_up_acting_osds(info.pgid, up, acting);
int role = osdmap->calc_pg_role(whoami, acting, acting.size());