Indicate 'V' verify state always
[fio.git] / fio.c
diff --git a/fio.c b/fio.c
index c2bc1a67625f0d7b991486143dd6bc385472ac78..6a72ce773820d0a19cad1497dd41e0a64ae31128 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -36,6 +36,7 @@
 
 #include "fio.h"
 #include "hash.h"
+#include "smalloc.h"
 
 unsigned long page_mask;
 unsigned long page_size;
@@ -60,6 +61,9 @@ struct io_log *agg_io_log[2];
 
 static inline void td_set_runstate(struct thread_data *td, int runstate)
 {
+       if (td->runstate == runstate)
+               return;
+
        dprint(FD_PROCESS, "pid=%d: runstate %d -> %d\n", td->pid, td->runstate,
                                                                runstate);
        td->runstate = runstate;
@@ -460,8 +464,11 @@ static void do_io(struct thread_data *td)
                 * Add verification end_io handler, if asked to verify
                 * a previously written file.
                 */
-               if (td->o.verify != VERIFY_NONE)
+               if (td->o.verify != VERIFY_NONE) {
                        io_u->end_io = verify_io_u;
+                       td_set_runstate(td, TD_VERIFYING);
+               } else
+                       td_set_runstate(td, TD_RUNNING);
 
                ret = td_io_queue(td, io_u);
                switch (ret) {
@@ -1153,7 +1160,18 @@ static void run_threads(void)
                                log_err("fio: pid=%d, err=%d/%s\n", td->pid, td->error, td->verror);
                        td_set_runstate(td, TD_REAPED);
                        todo--;
-               }
+               } else {
+                       struct fio_file *f;
+                       unsigned int i;
+
+                       /*
+                        * for sharing to work, each job must always open
+                        * its own files. so close them, if we opened them
+                        * for creation
+                        */
+                       for_each_file(td, f, i)
+                               td_io_close_file(td, f);
+               }
 
                init_disk_util(td);
        }
@@ -1291,6 +1309,8 @@ int main(int argc, char *argv[])
 {
        long ps;
 
+       sinit();
+
        /*
         * We need locale for number printing, if it isn't set then just
         * go with the US format.