diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c index 0a2ffc635c77d38648c54dd59ebaeff35cc6d52d..2bad934a67afcbd5b9a19ea6f439bcec032baba3 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) 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) { diff --git a/drivers/s390/scsi/zfcp_dbf.h b/drivers/s390/scsi/zfcp_dbf.h index 212622ca2e809822376c1a526c102684c8e49fdd..f71176acfab8fa93c01494b1a8912ab7a7b9225c 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 { u32 fsf_req_status; u8 sbal_first; u8 sbal_last; + u8 sbal_response; u8 pool; u64 erp_action; union { diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h index 210273d97f006d851932fc7619f54e0602aecf0d..fc61a8ed52d3c832bb0aa331b7a2c5d612f0543a 100644 --- a/drivers/s390/scsi/zfcp_def.h +++ b/drivers/s390/scsi/zfcp_def.h @@ -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 */ diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c index 8c83cdc73d988d2e92fa52cb583e0cfa38aef6e4..e71547357f62e29025529c23cdb6a7dd8c809090 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, * 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