io_u: Optimize set_rw_ddir()
authorDamien Le Moal <damien.lemoal@wdc.com>
Fri, 8 May 2020 07:56:44 +0000 (16:56 +0900)
committerJens Axboe <axboe@kernel.dk>
Fri, 15 May 2020 13:41:41 +0000 (07:41 -0600)
There is no need to execute zbd_adjust_ddir() for a job that is not
using zonemode=zbd. So move the job mode test out of zbd_adjust_ddir()
and conditionally execute this function by first testing the job mode
in set_rw_ddir().

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_u.c
zbd.c

diff --git a/io_u.c b/io_u.c
index 18e94617f08fd8677d9c839e8a5f71a58c85e99f..aa8808b8fe1294764ee3b6696cc5913521c29a3c 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -746,7 +746,8 @@ static void set_rw_ddir(struct thread_data *td, struct io_u *io_u)
 {
        enum fio_ddir ddir = get_rw_ddir(td);
 
-       ddir = zbd_adjust_ddir(td, io_u, ddir);
+       if (td->o.zone_mode == ZONE_MODE_ZBD)
+               ddir = zbd_adjust_ddir(td, io_u, ddir);
 
        if (td_trimwrite(td)) {
                struct fio_file *f = io_u->file;
diff --git a/zbd.c b/zbd.c
index db6d09f2bbd5ddefcced111c11bb5e0ad3abc4ef..d8fc7ef57a89ebfee58a77af2f0c56c55572eea2 100644 (file)
--- a/zbd.c
+++ b/zbd.c
@@ -1346,9 +1346,7 @@ enum fio_ddir zbd_adjust_ddir(struct thread_data *td, struct io_u *io_u,
         * devices with all empty zones. Overwrite the first I/O direction as
         * write to make sure data to read exists.
         */
-       if (td->o.zone_mode != ZONE_MODE_ZBD ||
-           ddir != DDIR_READ ||
-           !td_rw(td))
+       if (ddir != DDIR_READ || !td_rw(td))
                return ddir;
 
        if (io_u->file->zbd_info->sectors_with_data ||