Commit:     e00ba3dae077f54cfd2af42e939a618caa7a3bca
Parent:     e3c0ac04f980750a368f7cd5f1b8d1d2cdc1f735
Author:     Jeff Moyer <[EMAIL PROTECTED]>
AuthorDate: Tue Dec 4 23:45:02 2007 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Dec 5 09:21:18 2007 -0800

    aio: only account I/O wait time in read_events if there are active requests
    On 2.6.24, top started showing 100% iowait on one CPU when a UML instance 
    running (but completely idle).  The UML code sits in io_getevents waiting 
    an event to be submitted and completed.
    Fix this by checking ctx->reqs_active before scheduling to determine whether
    or not we are waiting for I/O.
    Signed-off-by: Jeff Moyer <[EMAIL PROTECTED]>
    Cc: Zach Brown <[EMAIL PROTECTED]>
    Cc: Miklos Szeredi <[EMAIL PROTECTED]>
    Cc: Jeff Dike <[EMAIL PROTECTED]>
    Cc: "Rafael J. Wysocki" <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
 fs/aio.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/fs/aio.c b/fs/aio.c
index f12db41..9dec7d2 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1161,7 +1161,12 @@ retry:
                        ret = 0;
                        if (to.timed_out)       /* Only check after read evt */
-                       io_schedule();
+                       /* Try to only show up in io wait if there are ops
+                        *  in flight */
+                       if (ctx->reqs_active)
+                               io_schedule();
+                       else
+                               schedule();
                        if (signal_pending(tsk)) {
                                ret = -EINTR;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to