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; }