]> err.no Git - linux-2.6/blobdiff - drivers/s390/scsi/zfcp_dbf.c
[SCSI] zfcp: fix spinlock initialization
[linux-2.6] / drivers / s390 / scsi / zfcp_dbf.c
index fff1537335c7b48be30f26103c632614b4714cfb..95599719f8ab9e02c8294b53e3885c7df7087c6a 100644 (file)
@@ -279,9 +279,18 @@ zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter,
                        break;
 
                case FSF_STATUS_READ_LINK_DOWN:
-                       rec->type.status.payload_size = sizeof(u64);
+                       switch (status_buffer->status_subtype) {
+                       case FSF_STATUS_READ_SUB_NO_PHYSICAL_LINK:
+                       case FSF_STATUS_READ_SUB_FDISC_FAILED:
+                               rec->type.status.payload_size =
+                                       sizeof(struct fsf_link_down_info);
+                       }
                        break;
 
+               case FSF_STATUS_READ_FEATURE_UPDATE_ALERT:
+                       rec->type.status.payload_size =
+                           ZFCP_DBF_UNSOL_PAYLOAD_FEATURE_UPDATE_ALERT;
+                       break;
                }
                memcpy(&rec->type.status.payload,
                       &status_buffer->payload, rec->type.status.payload_size);
@@ -477,8 +486,7 @@ struct debug_view zfcp_hba_dbf_view = {
 
 inline void
 _zfcp_san_dbf_event_common_ct(const char *tag, struct zfcp_fsf_req *fsf_req,
-                             fc_id_t s_id, fc_id_t d_id,
-                             void *buffer, int buflen)
+                             u32 s_id, u32 d_id, void *buffer, int buflen)
 {
        struct zfcp_send_ct *send_ct = (struct zfcp_send_ct *)fsf_req->data;
        struct zfcp_port *port = send_ct->port;
@@ -523,9 +531,9 @@ inline void zfcp_san_dbf_event_ct_request(struct zfcp_fsf_req *fsf_req)
        struct zfcp_port *port = ct->port;
        struct zfcp_adapter *adapter = port->adapter;
 
-       _zfcp_san_dbf_event_common_ct("octc",
-                                     fsf_req, adapter->s_id, port->d_id,
-                                     zfcp_sg_to_address(ct->req),
+       _zfcp_san_dbf_event_common_ct("octc", fsf_req,
+                                     fc_host_port_id(adapter->scsi_host),
+                                     port->d_id, zfcp_sg_to_address(ct->req),
                                      ct->req->length);
 }
 
@@ -535,17 +543,16 @@ inline void zfcp_san_dbf_event_ct_response(struct zfcp_fsf_req *fsf_req)
        struct zfcp_port *port = ct->port;
        struct zfcp_adapter *adapter = port->adapter;
 
-       _zfcp_san_dbf_event_common_ct("rctc",
-                                     fsf_req, port->d_id, adapter->s_id,
+       _zfcp_san_dbf_event_common_ct("rctc", fsf_req, port->d_id,
+                                     fc_host_port_id(adapter->scsi_host),
                                      zfcp_sg_to_address(ct->resp),
                                      ct->resp->length);
 }
 
 static inline void
 _zfcp_san_dbf_event_common_els(const char *tag, int level,
-                              struct zfcp_fsf_req *fsf_req,
-                              fc_id_t s_id, fc_id_t d_id, u8 ls_code,
-                              void *buffer, int buflen)
+                              struct zfcp_fsf_req *fsf_req, u32 s_id,
+                              u32 d_id, u8 ls_code, void *buffer, int buflen)
 {
        struct zfcp_adapter *adapter = fsf_req->adapter;
        struct zfcp_san_dbf_record *rec = &adapter->san_dbf_buf;
@@ -588,8 +595,9 @@ inline void zfcp_san_dbf_event_els_request(struct zfcp_fsf_req *fsf_req)
 {
        struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data;
 
-       _zfcp_san_dbf_event_common_els("oels", 2,
-                                      fsf_req, els->adapter->s_id, els->d_id,
+       _zfcp_san_dbf_event_common_els("oels", 2, fsf_req,
+                                      fc_host_port_id(els->adapter->scsi_host),
+                                      els->d_id,
                                       *(u8 *) zfcp_sg_to_address(els->req),
                                       zfcp_sg_to_address(els->req),
                                       els->req->length);
@@ -599,8 +607,8 @@ inline void zfcp_san_dbf_event_els_response(struct zfcp_fsf_req *fsf_req)
 {
        struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data;
 
-       _zfcp_san_dbf_event_common_els("rels", 2,
-                                      fsf_req, els->d_id, els->adapter->s_id,
+       _zfcp_san_dbf_event_common_els("rels", 2, fsf_req, els->d_id,
+                                      fc_host_port_id(els->adapter->scsi_host),
                                       *(u8 *) zfcp_sg_to_address(els->req),
                                       zfcp_sg_to_address(els->resp),
                                       els->resp->length);
@@ -614,9 +622,8 @@ inline void zfcp_san_dbf_event_incoming_els(struct zfcp_fsf_req *fsf_req)
        int length = (int)status_buffer->length -
            (int)((void *)&status_buffer->payload - (void *)status_buffer);
 
-       _zfcp_san_dbf_event_common_els("iels", 1,
-                                      fsf_req, status_buffer->d_id,
-                                      adapter->s_id,
+       _zfcp_san_dbf_event_common_els("iels", 1, fsf_req, status_buffer->d_id,
+                                      fc_host_port_id(adapter->scsi_host),
                                       *(u8 *) status_buffer->payload,
                                       (void *)status_buffer->payload, length);
 }
@@ -919,7 +926,6 @@ int zfcp_adapter_debug_register(struct zfcp_adapter *adapter)
        char dbf_name[DEBUG_MAX_NAME_LEN];
 
        /* debug feature area which records recovery activity */
-       spin_lock_init(&adapter->erp_dbf_lock);
        sprintf(dbf_name, "zfcp_%s_erp", zfcp_get_busid_by_adapter(adapter));
        adapter->erp_dbf = debug_register(dbf_name, dbfsize, 2,
                                          sizeof(struct zfcp_erp_dbf_record));
@@ -929,7 +935,6 @@ int zfcp_adapter_debug_register(struct zfcp_adapter *adapter)
        debug_set_level(adapter->erp_dbf, 3);
 
        /* debug feature area which records HBA (FSF and QDIO) conditions */
-       spin_lock_init(&adapter->hba_dbf_lock);
        sprintf(dbf_name, "zfcp_%s_hba", zfcp_get_busid_by_adapter(adapter));
        adapter->hba_dbf = debug_register(dbf_name, dbfsize, 1,
                                          sizeof(struct zfcp_hba_dbf_record));
@@ -940,7 +945,6 @@ int zfcp_adapter_debug_register(struct zfcp_adapter *adapter)
        debug_set_level(adapter->hba_dbf, 3);
 
        /* debug feature area which records SAN command failures and recovery */
-       spin_lock_init(&adapter->san_dbf_lock);
        sprintf(dbf_name, "zfcp_%s_san", zfcp_get_busid_by_adapter(adapter));
        adapter->san_dbf = debug_register(dbf_name, dbfsize, 1,
                                          sizeof(struct zfcp_san_dbf_record));
@@ -951,7 +955,6 @@ int zfcp_adapter_debug_register(struct zfcp_adapter *adapter)
        debug_set_level(adapter->san_dbf, 6);
 
        /* debug feature area which records SCSI command failures and recovery */
-       spin_lock_init(&adapter->scsi_dbf_lock);
        sprintf(dbf_name, "zfcp_%s_scsi", zfcp_get_busid_by_adapter(adapter));
        adapter->scsi_dbf = debug_register(dbf_name, dbfsize, 1,
                                           sizeof(struct zfcp_scsi_dbf_record));