Use cv_wait_io() which will will account for iowait
authorMatt Johnston <matt@fugro-fsi.com.au>
Fri, 21 Dec 2012 02:40:20 +0000 (10:40 +0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 7 Jan 2013 18:52:52 +0000 (10:52 -0800)
Update zio_wait() to use cv_wait_io() to ensure the iowait time
is properly accounted for.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
include/sys/zfs_context.h
module/zfs/zio.c

index ad282c4..6b00a5d 100644 (file)
@@ -322,6 +322,7 @@ extern void cv_signal(kcondvar_t *cv);
 extern void cv_broadcast(kcondvar_t *cv);
 #define cv_timedwait_interruptible(cv, mp, at) cv_timedwait(cv, mp, at)
 #define cv_wait_interruptible(cv, mp)          cv_wait(cv, mp)
+#define cv_wait_io(cv, mp)                     cv_wait(cv, mp)
 
 /*
  * kstat creation, installation and deletion
index ece3329..bfb817b 100644 (file)
@@ -1316,7 +1316,7 @@ zio_wait(zio_t *zio)
 
        mutex_enter(&zio->io_lock);
        while (zio->io_executor != NULL)
-               cv_wait(&zio->io_cv, &zio->io_lock);
+               cv_wait_io(&zio->io_cv, &zio->io_lock);
        mutex_exit(&zio->io_lock);
 
        error = zio->io_error;