diff --git a/ide.c b/ide.c
index ffe1b0893d68aa12479b54003c09e863994936f8..3f6f5c81bde2fdfa06086be5a4d1b9906d89c14a 100644
--- a/ide.c
+++ b/ide.c
@@ -159,6 +159,9 @@ ide_rw(int diskno, uint secno, void *addr, uint nsecs, int read)
     wakeup(&disk_queue);
   tail = (tail + 1) % NREQUEST;
 
+  // Start next request in queue, if any.
+  ide_start_request();
+
   release(&ide_lock);
 }