Pull SCSI fixes from James Bottomley: "Four minor fixes, all in drivers (qla2xxx, ibmvfc, ibmvscsi)" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: scsi: ibmvscsi: Fix WARN_ON during event pool release scsi: ibmvfc: Don't send implicit logouts prior to NPIV login scsi: qla2xxx: Delete all sessions before unregister local nvme port scsi: qla2xxx: Fix hang when issuing nvme disconnect-all in NPIV
Unified · Split
| @@ -3640,6 +3640,11 @@ static void ibmvfc_tgt_implicit_logout_and_del(struct ibmvfc_target *tgt) · 3639 unmodified lines | |||
| 3640 | struct ibmvfc_host *vhost = tgt->vhost; | 3640 | struct ibmvfc_host *vhost = tgt->vhost; |
| 3641 | struct ibmvfc_event *evt; | 3641 | struct ibmvfc_event *evt; |
| 3642 | 3642 | ||
| 3643 | if (!vhost->logged_in) { | ||
| 3644 | ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); | ||
| 3645 | return; | ||
| 3646 | } | ||
| 3647 | |||
| 3643 | if (vhost->discovery_threads >= disc_threads) | 3648 | if (vhost->discovery_threads >= disc_threads) |
| 3644 | return; | 3649 | return; |
| 3645 | 3650 | ||
| @@ -2320,16 +2320,12 @@ static int ibmvscsi_probe(struct vio_dev *vdev, const struct vio_device_id *id) · 2319 unmodified lines | |||
| 2320 | static int ibmvscsi_remove(struct vio_dev *vdev) | 2320 | static int ibmvscsi_remove(struct vio_dev *vdev) |
| 2321 | { | 2321 | { |
| 2322 | struct ibmvscsi_host_data *hostdata = dev_get_drvdata(&vdev->dev); | 2322 | struct ibmvscsi_host_data *hostdata = dev_get_drvdata(&vdev->dev); |
| 2323 | unsigned long flags; | ||
| 2324 | 2323 | ||
| 2325 | srp_remove_host(hostdata->host); | 2324 | srp_remove_host(hostdata->host); |
| 2326 | scsi_remove_host(hostdata->host); | 2325 | scsi_remove_host(hostdata->host); |
| 2327 | 2326 | ||
| 2328 | purge_requests(hostdata, DID_ERROR); | 2327 | purge_requests(hostdata, DID_ERROR); |
| 2329 | |||
| 2330 | spin_lock_irqsave(hostdata->host->host_lock, flags); | ||
| 2331 | release_event_pool(&hostdata->pool, hostdata); | 2328 | release_event_pool(&hostdata->pool, hostdata); |
| 2332 | spin_unlock_irqrestore(hostdata->host->host_lock, flags); | ||
| 2333 | 2329 | ||
| 2334 | ibmvscsi_release_crq_queue(&hostdata->queue, hostdata, | 2330 | ibmvscsi_release_crq_queue(&hostdata->queue, hostdata, |
| 2335 | max_events); | 2331 | max_events); |
| @@ -3031,11 +3031,11 @@ qla24xx_vport_delete(struct fc_vport *fc_vport) · 3030 unmodified lines | |||
| 3031 | test_bit(FCPORT_UPDATE_NEEDED, &vha->dpc_flags)) | 3031 | test_bit(FCPORT_UPDATE_NEEDED, &vha->dpc_flags)) |
| 3032 | msleep(1000); | 3032 | msleep(1000); |
| 3033 | 3033 | ||
| 3034 | qla_nvme_delete(vha); | ||
| 3035 | 3034 | ||
| 3036 | qla24xx_disable_vp(vha); | 3035 | qla24xx_disable_vp(vha); |
| 3037 | qla2x00_wait_for_sess_deletion(vha); | 3036 | qla2x00_wait_for_sess_deletion(vha); |
| 3038 | 3037 | ||
| 3038 | qla_nvme_delete(vha); | ||
| 3039 | vha->flags.delete_progress = 1; | 3039 | vha->flags.delete_progress = 1; |
| 3040 | 3040 | ||
| 3041 | qlt_remove_target(ha, vha); | 3041 | qlt_remove_target(ha, vha); |
| @@ -3153,7 +3153,7 @@ qla24xx_abort_command(srb_t *sp) · 3152 unmodified lines | |||
| 3153 | ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x108c, | 3153 | ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x108c, |
| 3154 | "Entered %s.\n", __func__); | 3154 | "Entered %s.\n", __func__); |
| 3155 | 3155 | ||
| 3156 | if (vha->flags.qpairs_available && sp->qpair) | 3156 | if (sp->qpair) |
| 3157 | req = sp->qpair->req; | 3157 | req = sp->qpair->req; |
| 3158 | else | 3158 | else |
| 3159 | return QLA_FUNCTION_FAILED; | 3159 | return QLA_FUNCTION_FAILED; |