From bfbae5e594e7d6e311bdbface259739838c51133 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 24 Jul 2008 12:10:39 +0000 Subject: [PATCH] The I/O callback will eventually move the operation back to the completed operations queue. That doesn't need to happen synchronously either. So we have to restart the loop. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26607 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/device_manager/IOScheduler.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/device_manager/IOScheduler.cpp b/src/system/kernel/device_manager/IOScheduler.cpp index ac59aa8de6..b6f2a9f5ee 100644 --- a/src/system/kernel/device_manager/IOScheduler.cpp +++ b/src/system/kernel/device_manager/IOScheduler.cpp @@ -164,11 +164,12 @@ IOScheduler::_Finisher() TRACE("IOScheduler::_Finisher(): operation: %p\n", operation); - while (!operation->Finish()) { + if (!operation->Finish()) { TRACE(" operation: %p not finished yet\n", operation); // TODO: This must be done differently once the scheduler implements // an actual scheduling policy (other than no-op). fIOCallback(fIOCallbackData, operation); + continue; } // notify request and remove operation