Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3baa9a2 authored by Martin Peschke's avatar Martin Peschke Committed by James Bottomley
Browse files

[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: default avatarMartin Peschke <mp3@de.ibm.com>
Signed-off-by: default avatarChristof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent e891bffe
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -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->fsf_req_status = fsf_req->status;
	response->sbal_first = fsf_req->sbal_first;
	response->sbal_first = fsf_req->sbal_first;
	response->sbal_last = fsf_req->sbal_last;
	response->sbal_last = fsf_req->sbal_last;
	response->sbal_response = fsf_req->sbal_response;
	response->pool = fsf_req->pool != NULL;
	response->pool = fsf_req->pool != NULL;
	response->erp_action = (unsigned long)fsf_req->erp_action;
	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, "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_first", "0x%02x", r->sbal_first);
	zfcp_dbf_out(p, "sbal_last", "0x%02x", r->sbal_last);
	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);
	zfcp_dbf_out(p, "pool", "0x%02x", r->pool);


	switch (r->fsf_command) {
	switch (r->fsf_command) {
+1 −0
Original line number Original line Diff line number Diff line
@@ -98,6 +98,7 @@ struct zfcp_hba_dbf_record_response {
	u32 fsf_req_status;
	u32 fsf_req_status;
	u8 sbal_first;
	u8 sbal_first;
	u8 sbal_last;
	u8 sbal_last;
	u8 sbal_response;
	u8 pool;
	u8 pool;
	u64 erp_action;
	u64 erp_action;
	union {
	union {
+1 −0
Original line number Original line Diff line number Diff line
@@ -856,6 +856,7 @@ struct zfcp_fsf_req {
						  this reuest */
						  this reuest */
	u8		       sbale_curr;     /* current SBALE during creation
	u8		       sbale_curr;     /* current SBALE during creation
						  of request */
						  of request */
	u8			sbal_response;	/* SBAL used in interrupt */
	wait_queue_head_t      completion_wq;  /* can be used by a routine
	wait_queue_head_t      completion_wq;  /* can be used by a routine
						  to wait for completion */
						  to wait for completion */
	volatile u32	       status;	       /* status of this request */
	volatile u32	       status;	       /* status of this request */
+3 −2
Original line number Original line Diff line number Diff line
@@ -235,7 +235,7 @@ zfcp_qdio_request_handler(struct ccw_device *ccw_device,
 * zfcp_qdio_reqid_check - checks for valid reqids.
 * zfcp_qdio_reqid_check - checks for valid reqids.
 */
 */
static void zfcp_qdio_reqid_check(struct zfcp_adapter *adapter,
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;
	struct zfcp_fsf_req *fsf_req;
	unsigned long flags;
	unsigned long flags;
@@ -255,6 +255,7 @@ static void zfcp_qdio_reqid_check(struct zfcp_adapter *adapter,
	atomic_dec(&adapter->reqs_active);
	atomic_dec(&adapter->reqs_active);
	spin_unlock_irqrestore(&adapter->req_list_lock, flags);
	spin_unlock_irqrestore(&adapter->req_list_lock, flags);


	fsf_req->sbal_response = sbal;
	/* finish the FSF request */
	/* finish the FSF request */
	zfcp_fsf_req_complete(fsf_req);
	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 */
			/* look for QDIO request identifiers in SB */
			buffere = &buffer->element[buffere_index];
			buffere = &buffer->element[buffere_index];
			zfcp_qdio_reqid_check(adapter,
			zfcp_qdio_reqid_check(adapter,
					      (unsigned long) buffere->addr);
					      (unsigned long) buffere->addr, i);


			/*
			/*
			 * A single used SBALE per inbound SBALE has been
			 * A single used SBALE per inbound SBALE has been