Patch "zfcp: trace on request for open and close of WKA port" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
zfcp: trace on request for open and close of WKA port
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
zfcp-trace-on-request-for-open-and-close-of-wka-port.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
d27a7cb91960cf1fdd11b10071e601828cbf4b1fMon Sep 17 00:00:00 2001
From: Steffen Maier <[email protected]>
Date: Wed, 10 Aug 2016 18:30:49 +0200
Subject: zfcp: trace on request for open and close of WKA port
From: Steffen Maier <[email protected]>
commit d27a7cb91960cf1fdd11b10071e601828cbf4b1f upstream.
Since commit a54ca0f62f953898b05549391ac2a8a4dad6482b ("[SCSI] zfcp: Redesign of the debug tracing for HBA records.") HBA records no longer contain WWPN, D_ID, or LUN
to reduce duplicate information which is already in REC records. In contrast to "regular" target ports, we don't use recovery to open WKA ports such as directory/nameserver, so we don't get REC records. Therefore, introduce pseudo REC running records without any actual recovery action but including D_ID of WKA port on open/close.
--- drivers/s390/scsi/zfcp_dbf.c | 32 ++++++++++++++++++++++++++++++++ drivers/s390/scsi/zfcp_ext.h | 1 + drivers/s390/scsi/zfcp_fsf.c | 8 ++++++-- 3 files changed, 39 insertions(+), 2 deletions(-)
drivers/s390/scsi/zfcp_dbf.c +32 -0
@@ -321,6 +321,38 @@ void zfcp_dbf_rec_run(char *tag, structspin_unlock_irqrestore (&dbf->rec_lock, flags); } +/** +* zfcp_dbf_rec_run_wka - trace wka port event with info like running recovery +* @tag: identifier for event +* @wka_port: well known address port +* @req_id: request ID to correlate with potential HBA trace record +*/ +void zfcp_dbf_rec_run_wka (char *tag,struct zfcp_fc_wka_port *wka_port, +u64 req_id) +{ +struct zfcp_dbf *dbf = wka_port->adapter->dbf; +struct zfcp_dbf_rec *rec = &dbf->rec_buf; +unsigned long flags; + +spin_lock_irqsave (&dbf->rec_lock, flags); +memset (rec,0 ,sizeof (*rec)); + + rec->id =ZFCP_DBF_REC_RUN ; +memcpy (rec->tag, tag,ZFCP_DBF_TAG_LEN ); + rec->port_status = wka_port->status; + rec->d_id = wka_port->d_id; + rec->lun =ZFCP_DBF_INVALID_LUN ; + + rec->u.run.fsf_req_id = req_id; + rec->u.run.rec_status = ~0 ; + rec->u.run.rec_step = ~0 ; + rec->u.run.rec_action = ~0 ; + rec->u.run.rec_count = ~0 ; + +debug_event (dbf->rec,1 , rec,sizeof (*rec)); +spin_unlock_irqrestore (&dbf->rec_lock, flags); +} +static inline void zfcp_dbf_san (char *tag,struct zfcp_dbf *dbf,void *data,u8 id,u16 len,u64 req_id,u32 d_id)
drivers/s390/scsi/zfcp_ext.h +1 -0
@@ -35,6 +35,7 @@ extern void zfcp_dbf_adapter_unregister(extern void zfcp_dbf_rec_trig (char *,struct zfcp_adapter *,struct zfcp_port *,struct scsi_device *,u8 ,u8 );extern void zfcp_dbf_rec_run (char *,struct zfcp_erp_action *); +extern void zfcp_dbf_rec_run_wka (char *,struct zfcp_fc_wka_port *,u64 );extern void zfcp_dbf_hba_fsf_uss (char *,struct zfcp_fsf_req *);extern void zfcp_dbf_hba_fsf_res (char *,int ,struct zfcp_fsf_req *);extern void zfcp_dbf_hba_bit_err (char *,struct zfcp_fsf_req *);
drivers/s390/scsi/zfcp_fsf.c +6 -2
@@ -1581,7 +1581,7 @@ out:int zfcp_fsf_open_wka_port (struct zfcp_fc_wka_port *wka_port) {struct zfcp_qdio *qdio = wka_port->adapter->qdio; -struct zfcp_fsf_req *req; +struct zfcp_fsf_req *req =NULL ;int retval = -EIO ;spin_lock_irq (&qdio->req_q_lock);
@@ -1610,6 +1610,8 @@ int zfcp_fsf_open_wka_port(struct zfcp_fzfcp_fsf_req_free (req); out:spin_unlock_irq (&qdio->req_q_lock); +if (req && !IS_ERR (req)) +zfcp_dbf_rec_run_wka ("fsowp_1" , wka_port, req->req_id);return retval; }
@@ -1634,7 +1636,7 @@ static void zfcp_fsf_close_wka_port_handint zfcp_fsf_close_wka_port (struct zfcp_fc_wka_port *wka_port) {struct zfcp_qdio *qdio = wka_port->adapter->qdio; -struct zfcp_fsf_req *req; +struct zfcp_fsf_req *req =NULL ;int retval = -EIO ;spin_lock_irq (&qdio->req_q_lock);
@@ -1663,6 +1665,8 @@ int zfcp_fsf_close_wka_port(struct zfcp_zfcp_fsf_req_free (req); out:spin_unlock_irq (&qdio->req_q_lock); +if (req && !IS_ERR (req)) +zfcp_dbf_rec_run_wka ("fscwp_1" , wka_port, req->req_id);return retval; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/zfcp-fix-els-gs-request-response-length-for-hardware-data-router.patch queue-4.4/zfcp-trace-on-request-for-open-and-close-of-wka-port.patch queue-4.4/zfcp-close-window-with-unblocked-rport-during-rport-gone.patch queue-4.4/zfcp-retain-trace-level-for-scsi-and-hba-fsf-response-records.patch queue-4.4/zfcp-restore-dont-use-0-to-indicate-invalid-lun-in-rec-trace.patch queue-4.4/zfcp-fix-fc_host-port_type-with-npiv.patch queue-4.4/zfcp-fix-d_id-field-with-actual-value-on-tracing-san-responses.patch queue-4.4/zfcp-fix-payload-trace-length-for-san-request-response.patch queue-4.4/scsi-zfcp-spin_lock_irqsave-is-not-nestable.patch queue-4.4/zfcp-restore-tracing-of-handle-for-port-and-lun-with-hba-records.patch queue-4.4/zfcp-trace-full-payload-of-all-san-records-req-resp-iels.patch