]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: requeue waiting peering events from deleted slots in unprime_split_children
authorSage Weil <sage@redhat.com>
Tue, 4 Dec 2018 19:57:47 +0000 (13:57 -0600)
committerSage Weil <sage@redhat.com>
Tue, 4 Dec 2018 19:57:47 +0000 (13:57 -0600)
These child slots we are deleting may have queued events that should be
requeued and reexamined.  For example, a pg query may be waiting for the
split and then discarded, instead of being reexamined and processed via
handle_pg_query_nopg().

Fixes: http://tracker.ceph.com/issues/37525
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc

index f6937ed79b987c40e010eb4778eab6d98a62c92a..3b9be43f3e6d835b8d829b8a4e5a6f9a72903746 100644 (file)
@@ -10221,6 +10221,7 @@ void OSDShard::unprime_split_children(spg_t parent, unsigned old_pg_num)
        i.first.get_ancestor(old_pg_num) == parent) {
       dout(10) << __func__ << " parent " << parent << " clearing " << i.first
               << dendl;
+      _wake_pg_slot(i.first, i.second.get());
       to_delete.push_back(i.first);
     }
   }