backend: include data direction in debug poisson rate print
[fio.git] / backend.c
index 2e8a9946ac1e85638a0ec84f295f1c3ec4b33ffd..7f08d5f23b7be8662a656d66336f0d6735b1205e 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -811,13 +811,14 @@ static long long usec_for_io(struct thread_data *td, enum fio_ddir ddir)
                uint64_t val;
                iops = bps / td->o.bs[ddir];
                val = (int64_t) (1000000 / iops) *
-                               -logf(__rand_0_1(&td->poisson_state));
+                               -logf(__rand_0_1(&td->poisson_state[ddir]));
                if (val) {
-                       dprint(FD_RATE, "poisson rate iops=%llu\n",
-                                       (unsigned long long) 1000000 / val);
+                       dprint(FD_RATE, "poisson rate iops=%llu, ddir=%d\n",
+                                       (unsigned long long) 1000000 / val,
+                                       ddir);
                }
-               td->last_usec += val;
-               return td->last_usec;
+               td->last_usec[ddir] += val;
+               return td->last_usec[ddir];
        } else if (bps) {
                secs = bytes / bps;
                remainder = bytes % bps;
@@ -1836,9 +1837,6 @@ err:
        if (o->write_iolog_file)
                write_iolog_close(td);
 
-       fio_mutex_remove(td->mutex);
-       td->mutex = NULL;
-
        td_set_runstate(td, TD_EXITED);
 
        /*
@@ -2056,8 +2054,16 @@ static bool check_mount_writes(struct thread_data *td)
        if (!td_write(td) || td->o.allow_mounted_write)
                return false;
 
+       /*
+        * If FIO_HAVE_CHARDEV_SIZE is defined, it's likely that chrdevs
+        * are mkfs'd and mounted.
+        */
        for_each_file(td, f, i) {
+#ifdef FIO_HAVE_CHARDEV_SIZE
+               if (f->filetype != FIO_TYPE_BLOCK && f->filetype != FIO_TYPE_CHAR)
+#else
                if (f->filetype != FIO_TYPE_BLOCK)
+#endif
                        continue;
                if (device_is_mounted(f->file_name))
                        goto mounted;
@@ -2427,6 +2433,8 @@ int fio_backend(struct sk_out *sk_out)
                        fio_mutex_remove(td->rusage_sem);
                        td->rusage_sem = NULL;
                }
+               fio_mutex_remove(td->mutex);
+               td->mutex = NULL;
        }
 
        free_disk_util();