bdevperf: exit with non-zero status code if any I/O fails
Also stop submitting new I/O for any target that reports an I/O failure by setting its is_draining flag when the I/O failure is detected. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I89c9d19b22a164caf5aef20d63b509d33b7aeef7
This commit is contained in:
parent
1a37acda67
commit
534256097b
@ -172,7 +172,11 @@ end_run(spdk_event_t event)
|
|||||||
if (g_show_performance_real_time) {
|
if (g_show_performance_real_time) {
|
||||||
spdk_poller_unregister(&g_perf_timer, NULL);
|
spdk_poller_unregister(&g_perf_timer, NULL);
|
||||||
}
|
}
|
||||||
spdk_app_stop(0);
|
if (g_run_failed) {
|
||||||
|
spdk_app_stop(1);
|
||||||
|
} else {
|
||||||
|
spdk_app_stop(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,17 +190,20 @@ bdevperf_complete(spdk_event_t event)
|
|||||||
struct spdk_bdev_io *bdev_io = spdk_event_get_arg2(event);
|
struct spdk_bdev_io *bdev_io = spdk_event_get_arg2(event);
|
||||||
spdk_event_t complete;
|
spdk_event_t complete;
|
||||||
|
|
||||||
|
target = task->target;
|
||||||
|
|
||||||
if (bdev_io->status != SPDK_BDEV_IO_STATUS_SUCCESS) {
|
if (bdev_io->status != SPDK_BDEV_IO_STATUS_SUCCESS) {
|
||||||
|
target->is_draining = true;
|
||||||
g_run_failed = true;
|
g_run_failed = true;
|
||||||
} else if (g_verify || g_reset || g_unmap) {
|
} else if (g_verify || g_reset || g_unmap) {
|
||||||
assert(bdev_io->u.read.iovcnt == 1);
|
assert(bdev_io->u.read.iovcnt == 1);
|
||||||
if (memcmp(task->buf, bdev_io->u.read.iov.iov_base, g_io_size) != 0) {
|
if (memcmp(task->buf, bdev_io->u.read.iov.iov_base, g_io_size) != 0) {
|
||||||
printf("Buffer mismatch! Disk Offset: %lu\n", bdev_io->u.read.offset);
|
printf("Buffer mismatch! Disk Offset: %lu\n", bdev_io->u.read.offset);
|
||||||
|
target->is_draining = true;
|
||||||
g_run_failed = true;
|
g_run_failed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
target = task->target;
|
|
||||||
target->current_queue_depth--;
|
target->current_queue_depth--;
|
||||||
target->io_completed++;
|
target->io_completed++;
|
||||||
|
|
||||||
@ -368,6 +375,7 @@ reset_cb(spdk_event_t event)
|
|||||||
|
|
||||||
if (status != SPDK_BDEV_IO_STATUS_SUCCESS) {
|
if (status != SPDK_BDEV_IO_STATUS_SUCCESS) {
|
||||||
printf("Reset blockdev=%s failed\n", target->bdev->name);
|
printf("Reset blockdev=%s failed\n", target->bdev->name);
|
||||||
|
target->is_draining = true;
|
||||||
g_run_failed = true;
|
g_run_failed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user