Recent changes (master)

Jens Axboe <[email protected]> Sun, 10 Aug 2025 06:00:01 -0600 (MDT)
Newsgroups org.kernel.vger.fio
Message-ID <[email protected]>
The following changes since commit f95cf49e1d2a8d2babb8aa385fb902d927533644:

  crc: use ISA-L for crc64 NVMe if available (2025-08-07 10:54:04 -0400)

are available in the Git repository at:

  git://git.kernel.dk/fio.git master

for you to fetch changes up to a52833b3295f0fae160eb3d4937a371756d6d929:

  verify: bump up verify state file version (2025-08-09 08:27:59 -0600)

----------------------------------------------------------------
Shin'ichiro Kawasaki (2):
      verify: fix write tracking in error cases
      verify: bump up verify state file version

 backend.c      |  2 ++
 io_u.c         | 11 +++++++++--
 verify-state.h |  2 +-
 3 files changed, 12 insertions(+), 3 deletions(-)

---

Diff of recent changes:

diff --git a/backend.c b/backend.c
index 922309a0..858506c4 100644
--- a/backend.c
+++ b/backend.c
@@ -449,6 +449,7 @@ int io_queue_event(struct thread_data *td, struct io_u *io_u, int *ret,
 	case FIO_Q_COMPLETED:
 		if (io_u->error) {
 			*ret = -io_u->error;
+			invalidate_inflight(td, io_u);
 			clear_io_u(td, io_u);
 		} else if (io_u->resid) {
 			long long bytes = io_u->xfer_buflen - io_u->resid;
@@ -467,6 +468,7 @@ int io_queue_event(struct thread_data *td, struct io_u *io_u, int *ret,
 				if (!from_verify)
 					unlog_io_piece(td, io_u);
 				td_verror(td, EIO, "full resid");
+				invalidate_inflight(td, io_u);
 				clear_io_u(td, io_u);
 				break;
 			}
diff --git a/io_u.c b/io_u.c
index 6d0f32a8..78dbac9c 100644
--- a/io_u.c
+++ b/io_u.c
@@ -869,9 +869,16 @@ void put_io_u(struct thread_data *td, struct io_u *io_u)
 		__td_io_u_unlock(td);
 }
 
+static inline void io_u_clear_inflight_flags(struct thread_data *td,
+					      struct io_u *io_u)
+{
+	io_u_clear(td, io_u, IO_U_F_FLIGHT | IO_U_F_BUSY_OK |
+		   IO_U_F_PATTERN_DONE);
+}
+
 void clear_io_u(struct thread_data *td, struct io_u *io_u)
 {
-	io_u_clear(td, io_u, IO_U_F_FLIGHT);
+	io_u_clear_inflight_flags(td, io_u);
 	put_io_u(td, io_u);
 }
 
@@ -2090,7 +2097,7 @@ static void io_completed(struct thread_data *td, struct io_u **io_u_ptr,
 	dprint_io_u(io_u, "complete");
 
 	assert(io_u->flags & IO_U_F_FLIGHT);
-	io_u_clear(td, io_u, IO_U_F_FLIGHT | IO_U_F_BUSY_OK | IO_U_F_PATTERN_DONE);
+	io_u_clear_inflight_flags(td, io_u);
 	invalidate_inflight(td, io_u);
 
 	if (td->o.zone_mode == ZONE_MODE_ZBD && td->o.recover_zbd_write_error &&
diff --git a/verify-state.h b/verify-state.h
index c055008e..d8997ace 100644
--- a/verify-state.h
+++ b/verify-state.h
@@ -41,7 +41,7 @@ struct all_io_list {
 	struct thread_io_list state[0];
 };
 
-#define VSTATE_HDR_VERSION	0x04
+#define VSTATE_HDR_VERSION	0x05
 
 struct verify_state_hdr {
 	uint64_t version;