[SCSI] zfcp: Add information about interrupt to trace.
authorMartin Peschke <mp3@de.ibm.com>
Mon, 19 May 2008 10:17:44 +0000 (12:17 +0200)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Thu, 5 Jun 2008 14:27:15 +0000 (09:27 -0500)
Store the index of the buffer in the inbound queue used to report
request completion in trace record for request coompletion.
This piece of information allows to better compare qdio and zfcp traces.

Signed-off-by: Martin Peschke <mp3@de.ibm.com>
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/s390/scsi/zfcp_dbf.c
drivers/s390/scsi/zfcp_dbf.h
drivers/s390/scsi/zfcp_def.h
drivers/s390/scsi/zfcp_qdio.c

index 0a2ffc635c77d38648c54dd59ebaeff35cc6d52d..2bad934a67afcbd5b9a19ea6f439bcec032baba3 100644 (file)
@@ -187,6 +187,7 @@ void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req)
        response->fsf_req_status = fsf_req->status;
        response->sbal_first = fsf_req->sbal_first;
        response->sbal_last = fsf_req->sbal_last;
+       response->sbal_response = fsf_req->sbal_response;
        response->pool = fsf_req->pool != NULL;
        response->erp_action = (unsigned long)fsf_req->erp_action;
 
@@ -355,6 +356,7 @@ static void zfcp_hba_dbf_view_response(char **p,
        zfcp_dbf_out(p, "fsf_req_status", "0x%08x", r->fsf_req_status);
        zfcp_dbf_out(p, "sbal_first", "0x%02x", r->sbal_first);
        zfcp_dbf_out(p, "sbal_last", "0x%02x", r->sbal_last);
+       zfcp_dbf_out(p, "sbal_response", "0x%02x", r->sbal_response);
        zfcp_dbf_out(p, "pool", "0x%02x", r->pool);
 
        switch (r->fsf_command) {
index 212622ca2e809822376c1a526c102684c8e49fdd..f71176acfab8fa93c01494b1a8912ab7a7b9225c 100644 (file)
@@ -98,6 +98,7 @@ struct zfcp_hba_dbf_record_response {
        u32 fsf_req_status;
        u8 sbal_first;
        u8 sbal_last;
+       u8 sbal_response;
        u8 pool;
        u64 erp_action;
        union {
index 210273d97f006d851932fc7619f54e0602aecf0d..fc61a8ed52d3c832bb0aa331b7a2c5d612f0543a 100644 (file)
@@ -856,6 +856,7 @@ struct zfcp_fsf_req {
                                                  this reuest */
        u8                     sbale_curr;     /* current SBALE during creation
                                                  of request */
+       u8                      sbal_response;  /* SBAL used in interrupt */
        wait_queue_head_t      completion_wq;  /* can be used by a routine
                                                  to wait for completion */
        volatile u32           status;         /* status of this request */
index 8c83cdc73d988d2e92fa52cb583e0cfa38aef6e4..e71547357f62e29025529c23cdb6a7dd8c809090 100644 (file)
@@ -235,7 +235,7 @@ zfcp_qdio_request_handler(struct ccw_device *ccw_device,
  * zfcp_qdio_reqid_check - checks for valid reqids.
  */
 static void zfcp_qdio_reqid_check(struct zfcp_adapter *adapter,
-                                 unsigned long req_id)
+                                 unsigned long req_id, int sbal)
 {
        struct zfcp_fsf_req *fsf_req;
        unsigned long flags;
@@ -255,6 +255,7 @@ static void zfcp_qdio_reqid_check(struct zfcp_adapter *adapter,
        atomic_dec(&adapter->reqs_active);
        spin_unlock_irqrestore(&adapter->req_list_lock, flags);
 
+       fsf_req->sbal_response = sbal;
        /* finish the FSF request */
        zfcp_fsf_req_complete(fsf_req);
 }
@@ -321,7 +322,7 @@ zfcp_qdio_response_handler(struct ccw_device *ccw_device,
                        /* look for QDIO request identifiers in SB */
                        buffere = &buffer->element[buffere_index];
                        zfcp_qdio_reqid_check(adapter,
-                                             (unsigned long) buffere->addr);
+                                             (unsigned long) buffere->addr, i);
 
                        /*
                         * A single used SBALE per inbound SBALE has been