From 913257cba5e17788b4bb126c20bc76bba63a1176 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Wed, 29 Mar 2017 14:15:47 -0700 Subject: [PATCH] Revert "scsi: use SOFT reset when reseting bdev" Some intermittent issues still observed with multiple resets in quick succession. Reverting for now while the issue is more fully root caused. This reverts commit 7fa7f91ee34996144b272f9d2a02988cc35b49d6. Signed-off-by: Jim Harris Change-Id: I493b564e8a110bbfb7a6cc47107d53d6eca40053 --- lib/scsi/scsi_bdev.c | 5 ++++- test/iscsi_tgt/reset/reset.sh | 2 ++ test/vhost/fiotest/common.sh | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) 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 }