[SCSI] zfcp: Simplify latency lock handling
[linux-2.6-block.git] / drivers / s390 / scsi / zfcp_fsf.c
index e6416f8541b0274e0692b84f60e3f3b26f093b83..cce698114b0b723f23c9f561e90de3c8134afbc8 100644 (file)
@@ -1712,7 +1712,7 @@ static void zfcp_fsf_close_physical_port_handler(struct zfcp_fsf_req *req)
        struct zfcp_unit *unit;
 
        if (req->status & ZFCP_STATUS_FSFREQ_ERROR)
-               goto skip_fsfstatus;
+               return;
 
        switch (header->fsf_status) {
        case FSF_PORT_HANDLE_NOT_VALID:
@@ -1752,8 +1752,6 @@ static void zfcp_fsf_close_physical_port_handler(struct zfcp_fsf_req *req)
                                          &unit->status);
                break;
        }
-skip_fsfstatus:
-       atomic_clear_mask(ZFCP_STATUS_PORT_PHYS_CLOSING, &port->status);
 }
 
 /**
@@ -1789,8 +1787,6 @@ int zfcp_fsf_close_physical_port(struct zfcp_erp_action *erp_action)
        req->erp_action = erp_action;
        req->handler = zfcp_fsf_close_physical_port_handler;
        erp_action->fsf_req = req;
-       atomic_set_mask(ZFCP_STATUS_PORT_PHYS_CLOSING,
-                       &erp_action->port->status);
 
        zfcp_fsf_start_erp_timer(req);
        retval = zfcp_fsf_req_send(req);
@@ -2073,7 +2069,6 @@ static void zfcp_fsf_req_latency(struct zfcp_fsf_req *req)
        struct fsf_qual_latency_info *lat_inf;
        struct latency_cont *lat;
        struct zfcp_unit *unit = req->unit;
-       unsigned long flags;
 
        lat_inf = &req->qtcb->prefix.prot_status_qual.latency_info;
 
@@ -2091,11 +2086,11 @@ static void zfcp_fsf_req_latency(struct zfcp_fsf_req *req)
                return;
        }
 
-       spin_lock_irqsave(&unit->latencies.lock, flags);
+       spin_lock(&unit->latencies.lock);
        zfcp_fsf_update_lat(&lat->channel, lat_inf->channel_lat);
        zfcp_fsf_update_lat(&lat->fabric, lat_inf->fabric_lat);
        lat->counter++;
-       spin_unlock_irqrestore(&unit->latencies.lock, flags);
+       spin_unlock(&unit->latencies.lock);
 }
 
 #ifdef CONFIG_BLK_DEV_IO_TRACE
@@ -2147,7 +2142,6 @@ static void zfcp_fsf_send_fcp_command_task_handler(struct zfcp_fsf_req *req)
 
        if (unlikely(req->status & ZFCP_STATUS_FSFREQ_ABORTED)) {
                set_host_byte(scpnt, DID_SOFT_ERROR);
-               set_driver_byte(scpnt, SUGGEST_RETRY);
                goto skip_fsfstatus;
        }