aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
authorMartin Peschke <mp3@de.ibm.com>2008-05-19 06:17:44 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-06-05 10:27:15 -0400
commitc3baa9a26c5ac7e8d801093d55d33620d8bc2fe2 (patch)
treefa3d2a985bd5ece1ebf09122e356087809459b73 /drivers/s390
parente891bffe927f39718cf84c35b380d6edb189848b (diff)
[SCSI] zfcp: Add information about interrupt to trace.
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>
Diffstat (limited to 'drivers/s390')
-rw-r--r--drivers/s390/scsi/zfcp_dbf.c2
-rw-r--r--drivers/s390/scsi/zfcp_dbf.h1
-rw-r--r--drivers/s390/scsi/zfcp_def.h1
-rw-r--r--drivers/s390/scsi/zfcp_qdio.c5
4 files changed, 7 insertions, 2 deletions
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c
index 0a2ffc635c7..2bad934a67a 100644
--- a/drivers/s390/scsi/zfcp_dbf.c
+++ b/drivers/s390/scsi/zfcp_dbf.c
@@ -187,6 +187,7 @@ void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req)
187 response->fsf_req_status = fsf_req->status; 187 response->fsf_req_status = fsf_req->status;
188 response->sbal_first = fsf_req->sbal_first; 188 response->sbal_first = fsf_req->sbal_first;
189 response->sbal_last = fsf_req->sbal_last; 189 response->sbal_last = fsf_req->sbal_last;
190 response->sbal_response = fsf_req->sbal_response;
190 response->pool = fsf_req->pool != NULL; 191 response->pool = fsf_req->pool != NULL;
191 response->erp_action = (unsigned long)fsf_req->erp_action; 192 response->erp_action = (unsigned long)fsf_req->erp_action;
192 193
@@ -355,6 +356,7 @@ static void zfcp_hba_dbf_view_response(char **p,
355 zfcp_dbf_out(p, "fsf_req_status", "0x%08x", r->fsf_req_status); 356 zfcp_dbf_out(p, "fsf_req_status", "0x%08x", r->fsf_req_status);
356 zfcp_dbf_out(p, "sbal_first", "0x%02x", r->sbal_first); 357 zfcp_dbf_out(p, "sbal_first", "0x%02x", r->sbal_first);
357 zfcp_dbf_out(p, "sbal_last", "0x%02x", r->sbal_last); 358 zfcp_dbf_out(p, "sbal_last", "0x%02x", r->sbal_last);
359 zfcp_dbf_out(p, "sbal_response", "0x%02x", r->sbal_response);
358 zfcp_dbf_out(p, "pool", "0x%02x", r->pool); 360 zfcp_dbf_out(p, "pool", "0x%02x", r->pool);
359 361
360 switch (r->fsf_command) { 362 switch (r->fsf_command) {
diff --git a/drivers/s390/scsi/zfcp_dbf.h b/drivers/s390/scsi/zfcp_dbf.h
index 212622ca2e8..f71176acfab 100644
--- a/drivers/s390/scsi/zfcp_dbf.h
+++ b/drivers/s390/scsi/zfcp_dbf.h
@@ -98,6 +98,7 @@ struct zfcp_hba_dbf_record_response {
98 u32 fsf_req_status; 98 u32 fsf_req_status;
99 u8 sbal_first; 99 u8 sbal_first;
100 u8 sbal_last; 100 u8 sbal_last;
101 u8 sbal_response;
101 u8 pool; 102 u8 pool;
102 u64 erp_action; 103 u64 erp_action;
103 union { 104 union {
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h
index 210273d97f0..fc61a8ed52d 100644
--- a/drivers/s390/scsi/zfcp_def.h
+++ b/drivers/s390/scsi/zfcp_def.h
@@ -856,6 +856,7 @@ struct zfcp_fsf_req {
856 this reuest */ 856 this reuest */
857 u8 sbale_curr; /* current SBALE during creation 857 u8 sbale_curr; /* current SBALE during creation
858 of request */ 858 of request */
859 u8 sbal_response; /* SBAL used in interrupt */
859 wait_queue_head_t completion_wq; /* can be used by a routine 860 wait_queue_head_t completion_wq; /* can be used by a routine
860 to wait for completion */ 861 to wait for completion */
861 volatile u32 status; /* status of this request */ 862 volatile u32 status; /* status of this request */
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c
index 8c83cdc73d9..e71547357f6 100644
--- a/drivers/s390/scsi/zfcp_qdio.c
+++ b/drivers/s390/scsi/zfcp_qdio.c
@@ -235,7 +235,7 @@ zfcp_qdio_request_handler(struct ccw_device *ccw_device,
235 * zfcp_qdio_reqid_check - checks for valid reqids. 235 * zfcp_qdio_reqid_check - checks for valid reqids.
236 */ 236 */
237static void zfcp_qdio_reqid_check(struct zfcp_adapter *adapter, 237static void zfcp_qdio_reqid_check(struct zfcp_adapter *adapter,
238 unsigned long req_id) 238 unsigned long req_id, int sbal)
239{ 239{
240 struct zfcp_fsf_req *fsf_req; 240 struct zfcp_fsf_req *fsf_req;
241 unsigned long flags; 241 unsigned long flags;
@@ -255,6 +255,7 @@ static void zfcp_qdio_reqid_check(struct zfcp_adapter *adapter,
255 atomic_dec(&adapter->reqs_active); 255 atomic_dec(&adapter->reqs_active);
256 spin_unlock_irqrestore(&adapter->req_list_lock, flags); 256 spin_unlock_irqrestore(&adapter->req_list_lock, flags);
257 257
258 fsf_req->sbal_response = sbal;
258 /* finish the FSF request */ 259 /* finish the FSF request */
259 zfcp_fsf_req_complete(fsf_req); 260 zfcp_fsf_req_complete(fsf_req);
260} 261}
@@ -321,7 +322,7 @@ zfcp_qdio_response_handler(struct ccw_device *ccw_device,
321 /* look for QDIO request identifiers in SB */ 322 /* look for QDIO request identifiers in SB */
322 buffere = &buffer->element[buffere_index]; 323 buffere = &buffer->element[buffere_index];
323 zfcp_qdio_reqid_check(adapter, 324 zfcp_qdio_reqid_check(adapter,
324 (unsigned long) buffere->addr); 325 (unsigned long) buffere->addr, i);
325 326
326 /* 327 /*
327 * A single used SBALE per inbound SBALE has been 328 * A single used SBALE per inbound SBALE has been