scsi: qla2xxx: Enable type checking for the SRB free and done callback functions
[linux-2.6-block.git] / drivers / scsi / qla2xxx / qla_nvme.c
index 963094b3c30078f4761169a657928ccbeeb8285a..af6b4677760270ae007e1ab466bf60222f25228d 100644 (file)
@@ -180,10 +180,9 @@ static void qla_nvme_ls_complete(struct work_struct *work)
        kref_put(&priv->sp->cmd_kref, qla_nvme_release_ls_cmd_kref);
 }
 
-static void qla_nvme_sp_ls_done(void *ptr, int res)
+static void qla_nvme_sp_ls_done(srb_t *sp, int res)
 {
-       srb_t *sp = ptr;
-       struct nvme_private *priv;
+       struct nvme_private *priv = sp->priv;
 
        if (WARN_ON_ONCE(kref_read(&sp->cmd_kref) == 0))
                return;
@@ -191,17 +190,15 @@ static void qla_nvme_sp_ls_done(void *ptr, int res)
        if (res)
                res = -EINVAL;
 
-       priv = (struct nvme_private *)sp->priv;
        priv->comp_status = res;
        INIT_WORK(&priv->ls_work, qla_nvme_ls_complete);
        schedule_work(&priv->ls_work);
 }
 
 /* it assumed that QPair lock is held. */
-static void qla_nvme_sp_done(void *ptr, int res)
+static void qla_nvme_sp_done(srb_t *sp, int res)
 {
-       srb_t *sp = ptr;
-       struct nvme_private *priv = (struct nvme_private *)sp->priv;
+       struct nvme_private *priv = sp->priv;
 
        priv->comp_status = res;
        kref_put(&sp->cmd_kref, qla_nvme_release_fcp_cmd_kref);
@@ -222,7 +219,7 @@ static void qla_nvme_abort_work(struct work_struct *work)
               "%s called for sp=%p, hndl=%x on fcport=%p deleted=%d\n",
               __func__, sp, sp->handle, fcport, fcport->deleted);
 
-       if (!ha->flags.fw_started && (fcport && fcport->deleted))
+       if (!ha->flags.fw_started && fcport->deleted)
                goto out;
 
        if (ha->flags.host_shutting_down) {
@@ -267,7 +264,6 @@ static void qla_nvme_ls_abort(struct nvme_fc_local_port *lport,
        schedule_work(&priv->abort_work);
 }
 
-
 static int qla_nvme_ls_req(struct nvme_fc_local_port *lport,
     struct nvme_fc_remote_port *rport, struct nvmefc_ls_req *fd)
 {
@@ -653,7 +649,9 @@ void qla_nvme_unregister_remote_port(struct fc_port *fcport)
            "%s: unregister remoteport on %p %8phN\n",
            __func__, fcport, fcport->port_name);
 
-       nvme_fc_set_remoteport_devloss(fcport->nvme_remote_port, 0);
+       if (test_bit(PFLG_DRIVER_REMOVING, &fcport->vha->pci_flags))
+               nvme_fc_set_remoteport_devloss(fcport->nvme_remote_port, 0);
+
        init_completion(&fcport->nvme_del_done);
        ret = nvme_fc_unregister_remoteport(fcport->nvme_remote_port);
        if (ret)