Spdk/lib/scsi
Shuhei Matsumoto 497997bc60 SCSI: Stop I/O flooding to hot-removing LUN from iSCSI target
We have observed unexpcted timeout when we remove LUNs from the
active iSCSI target dynamically during FIO workload.

By making destroy_raid_bdev RPC wait for its completion, we could know
the destroy_raid_bdev RPC caused timeout because LUN hot removal didn't
complete.

By investigating the log, incoming I/Os from the host had not stopped
even after hot removal process was started.

The reason was that iSCSI target had continued to accept incoming I/Os
from the host.

By removing LUN from the SCSI device at the start of the LUN hot removal
process, iSCSI target will be able to stop incoming I/Os and LUN hot removal
will complete in finite time.

LUN itself can be accessible even after it is removed from the SCSI device.

LUN hot removal is for not I_T nexus but I_T_L nexus and so we cannot
start connection exiting in this case because connection can have multiple
LUNs. So this fix requires few changes and will be practical.

  Fixes #715

Change-Id: I17d7a1f6c6557297289c3bd148a62db46da48ec5
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/453959
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2019-05-13 15:38:56 +00:00
..
dev.c lib/scsi: Make spdk_scsi_dev_destruct asynchronous 2019-04-22 18:22:59 +00:00
lun.c SCSI: Stop I/O flooding to hot-removing LUN from iSCSI target 2019-05-13 15:38:56 +00:00
Makefile scsi: remove lun_db 2018-01-09 13:56:00 -05:00
port.c scsi: add iSCSI initiator port TransportID 2018-12-05 16:04:06 +00:00
scsi_bdev.c scsi: alloc temporary data buffer with regular calloc 2019-05-01 17:59:34 +00:00
scsi_internal.h lib/scsi: Make spdk_scsi_dev_destruct asynchronous 2019-04-22 18:22:59 +00:00
scsi_rpc.c scsi: Use spdk_json_write_named_* APIs throughout 2019-02-04 07:08:04 +00:00
scsi.c trace: remove short_name 2019-05-02 08:41:56 +00:00
task.c scsi: alloc temporary data buffer with regular calloc 2019-05-01 17:59:34 +00:00