]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: handle osds that no longer exist in prior_set_affected
authorSage Weil <sage@newdream.net>
Tue, 9 Nov 2010 21:08:56 +0000 (13:08 -0800)
committerSage Weil <sage@newdream.net>
Tue, 9 Nov 2010 21:08:56 +0000 (13:08 -0800)
Consider no-longer-existent OSDs lost.

Signed-off-by: Sage Weil <sage@newdream.net>
src/osd/PG.cc

index beae6a7c170ed334c43e4141e18a97c300b395d0..788a3988c8df756b6af4ce68abc9f65536daed43 100644 (file)
@@ -799,7 +799,13 @@ bool PG::prior_set_affected(OSDMap *osdmap)
       dout(10) << "prior_set_affected: osd" << *p << " now up" << dendl;
       return true;
     }
-    // did someone in the prior set get lost?
+
+    // did someone in the prior set get lost or destroyed?
+    if (!osdmap->exists(o)) {
+      dout(10) << "prior_set_affected: osd" << o << " no longer exists" << dendl;
+      return true;
+    }
+      
     const osd_info_t& pinfo(osdmap->get_info(o));
     if (pinfo.lost_at > pinfo.up_from) {
       set<int>::const_iterator pl = prior_set_lost.find(o);