kernel/fs: fix I/O wait not accounted for RW O_DSYNC
authorStephane Gasparini <stephane.gasparini@linux.intel.com>
Tue, 9 Feb 2016 16:07:38 +0000 (17:07 +0100)
committerJens Axboe <axboe@fb.com>
Tue, 9 Feb 2016 16:27:01 +0000 (09:27 -0700)
 When a process is doing Random Write with O_DSYNC flag
 the I/O wait are not accounted in the kernel (get_cpu_iowait_time_us).
 This is preventing the governor or the cpufreq driver to account for
 I/O wait and thus use the right pstate

Signed-off-by: Stephane Gasparini <stephane.gasparini@linux.intel.com>
Signed-off-by: Philippe Longepe <philippe.longepe@linux.intel.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
block/bio.c

index dbabd48..f53a691 100644 (file)
@@ -874,7 +874,7 @@ int submit_bio_wait(int rw, struct bio *bio)
        bio->bi_private = &ret;
        bio->bi_end_io = submit_bio_wait_endio;
        submit_bio(rw, bio);
-       wait_for_completion(&ret.event);
+       wait_for_completion_io(&ret.event);
 
        return ret.error;
 }