diff --git a/lib/scsi/scsi_bdev.c b/lib/scsi/scsi_bdev.c index 511f4d4bb..a3f05e712 100644 --- a/lib/scsi/scsi_bdev.c +++ b/lib/scsi/scsi_bdev.c @@ -1247,6 +1247,9 @@ spdk_bdev_scsi_task_complete(struct spdk_bdev_io *bdev_io, enum spdk_bdev_io_sta } else if (task->type == SPDK_SCSI_TASK_TYPE_MANAGE) { if (status == SPDK_BDEV_IO_STATUS_SUCCESS) task->response = SPDK_SCSI_TASK_MGMT_RESP_SUCCESS; + if (task->function == SPDK_SCSI_TASK_FUNC_LUN_RESET) { + spdk_scsi_lun_clear_all(task->lun); + } } if (bdev_io->type == SPDK_BDEV_IO_TYPE_READ && task->iovs != bdev_io->u.read.iovs) { assert(task->iovcnt == bdev_io->u.read.iovcnt); @@ -1963,6 +1966,6 @@ spdk_bdev_scsi_execute(struct spdk_bdev *bdev, struct spdk_scsi_task *task) int spdk_bdev_scsi_reset(struct spdk_bdev *bdev, struct spdk_scsi_task *task) { - return spdk_bdev_reset(bdev, SPDK_BDEV_RESET_SOFT, + return spdk_bdev_reset(bdev, SPDK_BDEV_RESET_HARD, spdk_bdev_scsi_task_complete, task); } diff --git a/test/iscsi_tgt/reset/reset.sh b/test/iscsi_tgt/reset/reset.sh index 52e470616..4b08c1dae 100755 --- a/test/iscsi_tgt/reset/reset.sh +++ b/test/iscsi_tgt/reset/reset.sh @@ -67,9 +67,11 @@ trap "iscsicleanup; killprocess $pid; killprocess $fiopid; exit 1" SIGINT SIGTER # Do 3 resets while making sure iscsi_tgt and fio are still running for i in 1 2 3; do + sleep 1 kill -s 0 $pid kill -s 0 $fiopid sg_reset -d /dev/$dev + sleep 1 kill -s 0 $pid kill -s 0 $fiopid done diff --git a/test/vhost/fiotest/common.sh b/test/vhost/fiotest/common.sh index ab157cd54..471dd860d 100644 --- a/test/vhost/fiotest/common.sh +++ b/test/vhost/fiotest/common.sh @@ -740,6 +740,7 @@ function vm_reset_scsi_devices() for disk in "${@:2}"; do echo "INFO: VM$1 Performing device reset on disk $disk" vm_ssh $1 sg_reset /dev/$disk -vNd + sleep 2 done }