]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
fixed bug with bdev barriers and no intervening ios
authorsageweil <sageweil@29311d96-e01e-0410-9327-a35deaab8ce9>
Tue, 18 Dec 2007 22:41:26 +0000 (22:41 +0000)
committersageweil <sageweil@29311d96-e01e-0410-9327-a35deaab8ce9>
Tue, 18 Dec 2007 22:41:26 +0000 (22:41 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@2224 29311d96-e01e-0410-9327-a35deaab8ce9

branches/ebofs/ebofs/BlockDevice.cc

index 6fd899000063513240a877925e8170fa82334d48..57fa26b560f25a8023f1006ac36ea48beb2b53ef 100644 (file)
@@ -230,16 +230,17 @@ bool BlockDevice::BarrierQueue::bump()
 {
   assert(!qls.empty());
   
-  // is the front queue empty?
-  if (qls.front()->empty() &&
-      qls.front() != qls.back()) {
+  // is the front queue(s) empty?
+  bool did = false;
+  while (!qls.empty() &&
+        qls.front()->empty() &&
+        qls.front() != qls.back()) {
     delete qls.front();
     qls.pop_front();
     dout(10) << "dequeue_io front empty, moving to next queue (" << qls.front()->size() << ")" << dendl;
-    return true;
+    did = true;
   }
-
-  return false;
+  return did;
 }
 
 int BlockDevice::BarrierQueue::dequeue_io(list<biovec*>& biols,