From 3e9f06281e901353e45e4f128767dd877662d3c7 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Thu, 21 Jun 2018 13:37:31 +0900 Subject: [PATCH] scsi: Unregister the poller of LUN hot-removal when it is registered Change-Id: I48e831c235aab825c427892637ca1b4faafef152 Signed-off-by: Shuhei Matsumoto Reviewed-on: https://review.gerrithub.io/416317 Tested-by: SPDK Automated Test System Reviewed-by: Jim Harris Reviewed-by: Daniel Verkamp Reviewed-by: Ziye Yang --- lib/scsi/lun.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/scsi/lun.c b/lib/scsi/lun.c index b3957ac74..9a5ba8c3b 100644 --- a/lib/scsi/lun.c +++ b/lib/scsi/lun.c @@ -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; }