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
This commit is contained in:
@@ -164,11 +164,12 @@ IOScheduler::_Finisher()
|
|||||||
|
|
||||||
TRACE("IOScheduler::_Finisher(): operation: %p\n", operation);
|
TRACE("IOScheduler::_Finisher(): operation: %p\n", operation);
|
||||||
|
|
||||||
while (!operation->Finish()) {
|
if (!operation->Finish()) {
|
||||||
TRACE(" operation: %p not finished yet\n", operation);
|
TRACE(" operation: %p not finished yet\n", operation);
|
||||||
// TODO: This must be done differently once the scheduler implements
|
// TODO: This must be done differently once the scheduler implements
|
||||||
// an actual scheduling policy (other than no-op).
|
// an actual scheduling policy (other than no-op).
|
||||||
fIOCallback(fIOCallbackData, operation);
|
fIOCallback(fIOCallbackData, operation);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// notify request and remove operation
|
// notify request and remove operation
|
||||||
|
|||||||
Reference in New Issue
Block a user