diff --git a/verify.c b/verify.c
index 2aa5ab4..3f27e5a 100644
--- a/verify.c
+++ b/verify.c
@@ -185,7 +185,7 @@
 	if (vh->offset != io_u->offset + header_num * td->o.verify_interval) {
 		log_err("meta: verify failed at %llu/%u\n",
 				io_u->offset + header_num * hdr->len, hdr->len);
-		return EIO;
+		return EILSEQ;
 	}
 
 	return 0;
@@ -211,7 +211,7 @@
 				io_u->offset + header_num * hdr->len, hdr->len);
 		hexdump(vh->sha512, sizeof(vh->sha512));
 		hexdump(sha512_ctx.buf, sizeof(sha512));
-		return EIO;
+		return EILSEQ;
 	}
 
 	return 0;
@@ -237,7 +237,7 @@
 				io_u->offset + header_num * hdr->len, hdr->len);
 		hexdump(vh->sha256, sizeof(vh->sha256));
 		hexdump(sha256_ctx.buf, sizeof(sha256));
-		return EIO;
+		return EILSEQ;
 	}
 
 	return 0;
@@ -258,7 +258,7 @@
 		log_err("crc7: verify failed at %llu/%u\n",
 				io_u->offset + header_num * hdr->len, hdr->len);
 		log_err("crc7: wanted %x, got %x\n", vh->crc7, c);
-		return EIO;
+		return EILSEQ;
 	}
 
 	return 0;
@@ -279,7 +279,7 @@
 		log_err("crc16: verify failed at %llu/%u\n",
 				io_u->offset + header_num * hdr->len, hdr->len);
 		log_err("crc16: wanted %x, got %x\n", vh->crc16, c);
-		return EIO;
+		return EILSEQ;
 	}
 
 	return 0;
@@ -302,7 +302,7 @@
 				hdr->len);
 		log_err("crc64: wanted %llx, got %llx\n",
 					(unsigned long long) vh->crc64, c);
-		return EIO;
+		return EILSEQ;
 	}
 
 	return 0;
@@ -323,7 +323,7 @@
 		log_err("crc32: verify failed at %llu/%u\n",
 				io_u->offset + header_num * hdr->len, hdr->len);
 		log_err("crc32: wanted %x, got %x\n", vh->crc32, c);
-		return EIO;
+		return EILSEQ;
 	}
 
 	return 0;
@@ -347,7 +347,7 @@
 		log_err("crc32c: verify failed at %llu/%u\n",
 				io_u->offset + header_num * hdr->len, hdr->len);
 		log_err("crc32c: wanted %x, got %x\n", vh->crc32, c);
-		return EIO;
+		return EILSEQ;
 	}
 
 	return 0;
@@ -373,7 +373,7 @@
 				io_u->offset + header_num * hdr->len, hdr->len);
 		hexdump(vh->md5_digest, sizeof(vh->md5_digest));
 		hexdump(md5_ctx.hash, sizeof(hash));
-		return EIO;
+		return EILSEQ;
 	}
 
 	return 0;
@@ -406,7 +406,7 @@
 			log_err("fio: got pattern %x, wanted %x. Bad bits %d\n",
 				buf[i], split_pattern[mod], bits);
 			log_err("fio: bad pattern block offset %u\n", i);
-			return EIO;
+			return EILSEQ;
 		}
 		mod++;
 		if (mod == pattern_size)
@@ -444,7 +444,7 @@
 
 		if (hdr->fio_magic != FIO_HDR_MAGIC) {
 			log_err("Bad verify header %x\n", hdr->fio_magic);
-			return EIO;
+			return EILSEQ;
 		}
 
 		if (td->o.verify_pattern_bytes) {
