]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: cancel deletion on pg change
authorSage Weil <sage@newdream.net>
Tue, 5 Oct 2010 22:41:40 +0000 (15:41 -0700)
committerSage Weil <sage@newdream.net>
Tue, 5 Oct 2010 22:47:08 +0000 (15:47 -0700)
If the primary changes, cancel deletion so that the new primary has the
benefit of considering whether they need anything we have.  Before we were
only canceling if our role changed, but that makes little sense.

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

index 56889c0a0985c5c9626f66781ac839441d0a8e9c..e69b81e48ab0837fc2039e913987e9515d605acf 100644 (file)
@@ -2659,14 +2659,14 @@ void OSD::advance_map(ObjectStore::Transaction& t)
       if (osdmap->is_down(oldacting[i]))
        pg->on_osd_failure(oldacting[i]);
     pg->on_change();
+
+    if (pg->deleting) {
+      dout(10) << *pg << " canceling deletion!" << dendl;
+      pg->deleting = false;
+      remove_wq.dequeue(pg);
+    }
     
     if (role != oldrole) {
-      // old stray?
-      if (oldrole < 0 && pg->deleting) {
-       dout(10) << *pg << " canceling deletion!" << dendl;
-       pg->deleting = false;
-      }
-
       // old primary?
       if (oldrole == 0) {
        pg->state_clear(PG_STATE_CLEAN);