Fix cases where td->terminate is set, but terminate clock not marked
[fio.git] / verify.c
index 184f3a7f821b52487557b352e3b2f201a475905c..e59a4b29051065cd9ebd1caf0ab1b9494f313211 100644 (file)
--- a/verify.c
+++ b/verify.c
@@ -720,7 +720,7 @@ static int verify_header(struct io_u *io_u, struct verify_header *hdr,
                        hdr->magic, FIO_HDR_MAGIC);
                goto err;
        }
-       if (hdr->len > io_u->buflen) {
+       if (hdr->len != hdr_len) {
                log_err("verify: bad header length %u, wanted %u",
                        hdr->len, hdr_len);
                goto err;
@@ -847,7 +847,7 @@ int verify_io_u(struct thread_data *td, struct io_u *io_u)
 
 done:
        if (ret && td->o.verify_fatal)
-               td->terminate = 1;
+               fio_mark_td_terminate(td);
 
        return ret;
 }
@@ -1082,7 +1082,7 @@ int get_next_verify(struct thread_data *td, struct io_u *io_u)
                assert(ipo->flags & IP_F_ONRB);
                ipo->flags &= ~IP_F_ONRB;
        } else if (!flist_empty(&td->io_hist_list)) {
-               ipo = flist_entry(td->io_hist_list.next, struct io_piece, list);
+               ipo = flist_first_entry(&td->io_hist_list, struct io_piece, list);
 
                /*
                 * Ensure that the associated IO has completed
@@ -1187,7 +1187,7 @@ static void *verify_async_thread(void *data)
                        continue;
 
                while (!flist_empty(&list)) {
-                       io_u = flist_entry(list.next, struct io_u, verify_list);
+                       io_u = flist_first_entry(&list, struct io_u, verify_list);
                        flist_del(&io_u->verify_list);
 
                        ret = verify_io_u(td, io_u);
@@ -1205,7 +1205,7 @@ static void *verify_async_thread(void *data)
        if (ret) {
                td_verror(td, ret, "async_verify");
                if (td->o.verify_fatal)
-                       td->terminate = 1;
+                       fio_mark_td_terminate(td);
        }
 
 done: