configure: make __sync_fetch_and_add() test use 64-bit types
[fio.git] / backend.c
index ef5003e169c8a8f519223f232db802134de85ace..3eafff6e6bbbcca9bc8ef3594ff3f74e0e222013 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -373,6 +373,9 @@ static inline void update_runtime(struct thread_data *td,
                                  unsigned long long *elapsed_us,
                                  const enum fio_ddir ddir)
 {
+       if (ddir == DDIR_WRITE && td_write(td) && td->o.verify_only)
+               return;
+
        td->ts.runtime[ddir] -= (elapsed_us[ddir] + 999) / 1000;
        elapsed_us[ddir] += utime_since_now(&td->start);
        td->ts.runtime[ddir] += (elapsed_us[ddir] + 999) / 1000;
@@ -891,7 +894,7 @@ static uint64_t do_io(struct thread_data *td)
                } else {
                        ret = td_io_queue(td, io_u);
 
-                       if (io_queue_event(td, io_u, &ret, ddir, &bytes_issued, 1, &comp_time))
+                       if (io_queue_event(td, io_u, &ret, ddir, &bytes_issued, 0, &comp_time))
                                break;
 
                        /*
@@ -1172,13 +1175,17 @@ static int switch_ioscheduler(struct thread_data *td)
        /*
         * Read back and check that the selected scheduler is now the default.
         */
+       memset(tmp, 0, sizeof(tmp));
        ret = fread(tmp, sizeof(tmp), 1, f);
        if (ferror(f) || ret < 0) {
                td_verror(td, errno, "fread");
                fclose(f);
                return 1;
        }
-       tmp[sizeof(tmp) - 1] = '\0';
+       /*
+        * either a list of io schedulers or "none\n" is expected.
+        */
+       tmp[strlen(tmp) - 1] = '\0';
 
 
        sprintf(tmp2, "[%s]", td->o.ioscheduler);
@@ -1235,7 +1242,8 @@ static int keep_running(struct thread_data *td)
 
 static int exec_string(struct thread_options *o, const char *string, const char *mode)
 {
-       int ret, newlen = strlen(string) + strlen(o->name) + strlen(mode) + 9 + 1;
+       size_t newlen = strlen(string) + strlen(o->name) + strlen(mode) + 9 + 1;
+       int ret;
        char *str;
 
        str = malloc(newlen);
@@ -1878,11 +1886,12 @@ static int fio_verify_load_state(struct thread_data *td)
 
        if (is_backend) {
                void *data;
+               int ver;
 
                ret = fio_server_get_verify_state(td->o.name,
-                                       td->thread_number - 1, &data);
+                                       td->thread_number - 1, &data, &ver);
                if (!ret)
-                       verify_convert_assign_state(td, data);
+                       verify_convert_assign_state(td, data, ver);
        } else
                ret = verify_load_state(td, "local");