Spdk/lib
Darek Stojaczyk 7a1c568598 Revert "SCSI: Stop I/O flooding to hot-removing LUN from iSCSI target"
Hotremoving a bdev exposed as a vhost-scsi LUN which
has an allocated io_channel is broken now. By detaching
LUNs from their SCSI devices at the start of LUN
hotremoval, we can end up with the LUN's descriptor
completely leaked.

Upon hotremove, each LUN fires a hotremove_cb to the
upper layer (iscsi/vhost) and starts a poller to
periodically check if lun->io_channel has been closed
already. While iSCSI allocates and frees io_channels
for particular LUNs separately using
spdk_scsi_lun_allocate_io_channel(), vhost allocates
and frees io_channels for the entire SCSI device using
spdk_scsi_dev_free_io_channels(), as it knows there's
only one LUN per SCSI device.

Since LUNs are removed from SCSI devices at the start
of LUN hotremoval, the spdk_scsi_dev_free_io_channels()
is not able to close the io_channel of the child LUN.
That LUN is no longer referenced there, and the function
returns immediately without any error.

By reverting this patch, we practically defer removing
LUN from SCSI device until the bdev descriptor is closed,
that is, until that spdk_scsi_dev_free_io_channels()
and the subsequent spdk_scsi_dev_destruct() in vhost
is called.

Historically, spdk_scsi_lun_free_io_channel() was
introduced after vhost-scsi already supported hotremove,
so before we can introduce a change like this one we
have to refactor vhost to use the new APIs first.

This reverts commit 497997bc60.

Change-Id: I58a9988a22694f5b5b927173098ac8218270462e
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455371
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2019-05-24 23:46:53 +00:00
..
bdev ocf: serialize base bdev names in OCF UUID 2019-05-23 19:01:38 +00:00
blob blobstore: Remove blob on blobstore load when required 2019-05-24 23:09:56 +00:00
blobfs blobfs: removed unaligned memory access 2019-05-20 16:55:42 +00:00
conf string: spdk_strtol to delegate additional error checking 2019-01-29 00:10:57 +00:00
copy misc/rpc: rename some C functions of rpc methods 2019-05-07 05:30:16 +00:00
env_dpdk env_dpdk: set crypto log level to ERR 2019-05-13 15:46:50 +00:00
event thread: Add a mechanism to exit a lightweight thread 2019-05-22 04:23:17 +00:00
ftl lib/ftl: improved padding during shutdown 2019-05-24 23:29:22 +00:00
ioat ioat: allocate device struct using regular calloc 2019-04-09 06:30:42 +00:00
iscsi lib/iscsi: Rename _iov_ctx to _iscsi_sgl to match DIF library 2019-05-24 23:19:24 +00:00
json json_util: add debug logs to spdk_json_decode_object function 2019-01-10 14:31:37 +00:00
jsonrpc jsonrpc: Use spdk_json_write_named_* APIs throughout 2019-02-04 07:08:04 +00:00
log log/fdump: fix alignment of the last printed line 2019-05-10 10:27:29 +00:00
lvol lvol: Fix for lvol failed deletion flow 2019-04-02 19:23:22 +00:00
nbd nbd: optional nbd_device in start_nbd_disk 2019-04-04 08:35:50 +00:00
net net: Use spdk_json_write_named_* APIs throughout 2019-02-04 07:08:04 +00:00
notify lib/notify: rename spdk_notify_get_events to spdk_notify_foreach_event 2019-05-07 06:11:27 +00:00
nvme nvme/tcp: Rename _iov_ctx to _nvme_tcp_sgl to match DIF library 2019-05-24 23:19:24 +00:00
nvmf nvmf: increase default max num qps to 128 2019-05-22 14:50:05 +00:00
reduce lib/reduce: add new API to retrieve volume parameters 2019-05-13 15:41:35 +00:00
rocksdb rocksdb: cleanup SpdkInitializeThread/SpdkFinalizeThread 2019-05-02 09:00:43 +00:00
rpc rpc: fix segfault on get_spdk_version request with extra params 2019-05-22 04:36:47 +00:00
scsi Revert "SCSI: Stop I/O flooding to hot-removing LUN from iSCSI target" 2019-05-24 23:46:53 +00:00
sock sock: fix a uninitialized-variable error 2019-05-08 21:24:13 +00:00
thread thread: Add a mechanism to exit a lightweight thread 2019-05-22 04:23:17 +00:00
trace trace: print error message if event name is too long 2019-05-02 08:41:56 +00:00
ut_mock thread: Eliminate use of pthread_self and thread_ids 2019-01-15 16:53:12 +00:00
util util/cpuset: use dst & src parameter names 2019-05-23 07:00:34 +00:00
vhost rte_vhost: fix deadlock on rte_vhost_driver_unregister() 2019-05-24 00:53:42 +00:00
virtio virtio: zero-out virtqueue structures at init 2019-04-22 16:49:39 +00:00
Makefile bdev/nvme: always enable FTL 2019-05-02 08:41:56 +00:00