]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: flush old/discarded OpSequencers too
authorSage Weil <sage@redhat.com>
Tue, 14 Mar 2017 14:33:17 +0000 (10:33 -0400)
committerSage Weil <sage@redhat.com>
Tue, 21 Mar 2017 18:56:29 +0000 (13:56 -0500)
When the Sequencer goes away it get deregistered.  If there are still
deferred IOs in flight, we need to wait for those too.

Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlueStore.cc

index 1fa2ef1d1ed972566266095312819b92e4982456..f870dc0078eeb360be60a8d233b650e79e91b2da 100644 (file)
@@ -7445,6 +7445,11 @@ void BlueStore::_osr_drain_all()
   {
     // submit anything pending
     std::lock_guard<std::mutex> l(deferred_lock);
+    // include deferred osrs in our wait list; these may have been
+    // deregistered already!
+    for (auto& osr : deferred_queue) {
+      s.insert(&osr);
+    }
     _deferred_try_submit();
   }
   {