scsi: Unregister the poller of LUN hot-removal when it is registered

Change-Id: I48e831c235aab825c427892637ca1b4faafef152
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/416317
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ziye Yang <optimistyzy@gmail.com>
This commit is contained in:
Shuhei Matsumoto 2018-06-21 13:37:31 +09:00 committed by Ben Walker
parent 0ba0bbd132
commit 3e9f06281e

View File

@ -187,7 +187,6 @@ spdk_scsi_lun_remove(struct spdk_scsi_lun *lun)
spdk_scsi_lun_free_io_channel(lun);
spdk_bdev_close(lun->bdev_desc);
spdk_poller_unregister(&lun->hotremove_poller);
spdk_scsi_dev_delete_lun(lun->dev, lun);
free(lun);
@ -198,10 +197,13 @@ spdk_scsi_lun_hot_remove_poll(void *arg)
{
struct spdk_scsi_lun *lun = (struct spdk_scsi_lun *)arg;
if (!spdk_scsi_lun_has_pending_tasks(lun)) {
spdk_scsi_lun_remove(lun);
if (spdk_scsi_lun_has_pending_tasks(lun)) {
return -1;
}
spdk_poller_unregister(&lun->hotremove_poller);
spdk_scsi_lun_remove(lun);
return -1;
}