mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ben Hutchings <ben@decadent.org.uk>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: akpm@linux-foundation.org,
	"Benjamin Block" <bblock@linux.vnet.ibm.com>,
	"Steffen Maier" <maier@linux.vnet.ibm.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>
Subject: [PATCH 3.2 10/61] scsi: zfcp: fix capping of unsuccessful GPN_FT SAN response trace records
Date: Wed, 22 Nov 2017 02:11:06 +0000	[thread overview]
Message-ID: <lsq.1511316666.702046883@decadent.org.uk> (raw)
In-Reply-To: <lsq.1511316665.221837797@decadent.org.uk>

3.2.96-rc1 review patch.  If anyone has any objections, please let me know.

------------------

From: Steffen Maier <maier@linux.vnet.ibm.com>

commit 975171b4461be296a35e83ebd748946b81cf0635 upstream.

v4.9 commit aceeffbb59bb ("zfcp: trace full payload of all SAN records
(req,resp,iels)") fixed trace data loss of 2.6.38 commit 2c55b750a884
("[SCSI] zfcp: Redesign of the debug tracing for SAN records.")
necessary for problem determination, e.g. to see the
currently active zone set during automatic port scan.

While it already saves space by not dumping any empty residual entries
of the large successful GPN_FT response (4 pages), there are seldom cases
where the GPN_FT response is unsuccessful and likely does not have
FC_NS_FID_LAST set in fp_flags so we did not cap the trace record.
We typically see such case for an initiator WWPN, which is not in any zone.

Cap unsuccessful responses to at least the actual basic CT_IU response
plus whatever fits the SAN trace record built-in "payload" buffer
just in case there's trailing information
of which we would at least see the existence and its beginning.

In order not to erroneously cap successful responses, we need to swap
calling the trace function and setting the CT / ELS status to success (0).

Example trace record pair formatted with zfcpdbf:

Timestamp      : ...
Area           : SAN
Subarea        : 00
Level          : 1
Exception      : -
CPU ID         : ..
Caller         : 0x...
Record ID      : 1
Tag            : fssct_1
Request ID     : 0x<request_id>
Destination ID : 0x00fffffc
SAN req short  : 01000000 fc020000 01720ffc 00000000
                 00000008
SAN req length : 20
|
Timestamp      : ...
Area           : SAN
Subarea        : 00
Level          : 1
Exception      : -
CPU ID         : ..
Caller         : 0x...
Record ID      : 2
Tag            : fsscth2
Request ID     : 0x<request_id>
Destination ID : 0x00fffffc
SAN resp short : 01000000 fc020000 80010000 00090700
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
SAN resp length: 16384
San resp info  : 01000000 fc020000 80010000 00090700
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]
                 00000000 00000000 00000000 00000000 [trailing info]

The fix saves all but one of the previously associated 64 PAYload trace
record chunks of size 256 bytes each.

Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
Fixes: aceeffbb59bb ("zfcp: trace full payload of all SAN records (req,resp,iels)")
Fixes: 2c55b750a884 ("[SCSI] zfcp: Redesign of the debug tracing for SAN records.")
Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
Signed-off-by: Benjamin Block <bblock@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 drivers/s390/scsi/zfcp_dbf.c | 10 +++++++++-
 drivers/s390/scsi/zfcp_fsf.c |  4 ++--
 2 files changed, 11 insertions(+), 3 deletions(-)

--- a/drivers/s390/scsi/zfcp_dbf.c
+++ b/drivers/s390/scsi/zfcp_dbf.c
@@ -3,7 +3,7 @@
  *
  * Debug traces for zfcp.
  *
- * Copyright IBM Corp. 2002, 2016
+ * Copyright IBM Corp. 2002, 2017
  */
 
 #define KMSG_COMPONENT "zfcp"
@@ -440,6 +440,7 @@ static u16 zfcp_dbf_san_res_cap_len_if_g
 	struct fc_ct_hdr *reqh = sg_virt(ct_els->req);
 	struct fc_ns_gid_ft *reqn = (struct fc_ns_gid_ft *)(reqh + 1);
 	struct scatterlist *resp_entry = ct_els->resp;
+	struct fc_ct_hdr *resph;
 	struct fc_gpn_ft_resp *acc;
 	int max_entries, x, last = 0;
 
@@ -466,6 +467,13 @@ static u16 zfcp_dbf_san_res_cap_len_if_g
 		return len; /* not GPN_FT response so do not cap */
 
 	acc = sg_virt(resp_entry);
+
+	/* cap all but accept CT responses to at least the CT header */
+	resph = (struct fc_ct_hdr *)acc;
+	if ((ct_els->status) ||
+	    (resph->ct_cmd != cpu_to_be16(FC_FS_ACC)))
+		return max(FC_CT_HDR_LEN, ZFCP_DBF_SAN_MAX_PAYLOAD);
+
 	max_entries = (reqh->ct_mr_size * 4 / sizeof(struct fc_gpn_ft_resp))
 		+ 1 /* zfcp_fc_scan_ports: bytes correct, entries off-by-one
 		     * to account for header as 1st pseudo "entry" */;
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -902,8 +902,8 @@ static void zfcp_fsf_send_ct_handler(str
 
 	switch (header->fsf_status) {
         case FSF_GOOD:
-		zfcp_dbf_san_res("fsscth2", req);
 		ct->status = 0;
+		zfcp_dbf_san_res("fsscth2", req);
 		break;
         case FSF_SERVICE_CLASS_NOT_SUPPORTED:
 		zfcp_fsf_class_not_supp(req);
@@ -1086,8 +1086,8 @@ static void zfcp_fsf_send_els_handler(st
 
 	switch (header->fsf_status) {
 	case FSF_GOOD:
-		zfcp_dbf_san_res("fsselh1", req);
 		send_els->status = 0;
+		zfcp_dbf_san_res("fsselh1", req);
 		break;
 	case FSF_SERVICE_CLASS_NOT_SUPPORTED:
 		zfcp_fsf_class_not_supp(req);

  parent reply	other threads:[~2017-11-22  3:05 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-22  2:11 [PATCH 3.2 00/61] 3.2.96-rc1 review Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 05/61] PCI: shpchp: Enable bridge bus mastering if MSI is enabled Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 03/61] fcntl: Don't use ambiguous SIG_POLL si_codes Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 07/61] x86/fsgsbase/64: Report FSBASE and GSBASE correctly in core dumps Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 01/61] IB/core: Fix the validations of a multicast LID in attach or detach operations Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 06/61] dlm: avoid double-free on error path in dlm_device_{register,unregister} Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 08/61] scsi: zfcp: fix queuecommand for scsi_eh commands when DIX enabled Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 02/61] signal: move the "sig < SIGRTMIN" check into siginmask(sig) Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 04/61] powerpc/mm: Fix check of multiple 16G pages from device tree Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 22/61] USB: core: Avoid race of async_completed() w/ usbdev_release() Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 34/61] ftrace: Fix selftest goto location on error Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 40/61] mm/vmstat.c: fix wrong comment Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 38/61] MIPS: AR7: allow NULL clock for clk_get_rate Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 41/61] genirq: Make sparse_irq_lock protect what it should protect Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 49/61] KVM: SVM: Add a missing 'break' statement Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 52/61] ext4: validate s_first_meta_bg at mount time Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 59/61] net: cdc_ether: fix divide by 0 on bad descriptors Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 32/61] powerpc: Correct instruction code for xxlor instruction Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 28/61] [SCSI] qla2xxx: Corrections to returned sysfs error codes Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 26/61] net/mlx4_core: Make explicit conversion to 64bit value Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 30/61] scsi: qla2xxx: Fix an integer overflow in sysfs code Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 27/61] scsi: aacraid: Fix command send race condition Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 57/61] media: imon: Fix null-ptr-deref in imon_probe Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 37/61] l2tp: pass tunnel pointer to ->session_create() Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 47/61] Input: xpad - validate USB endpoint type during probe Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 44/61] Input: xpad - add a few new VID/PID combinations Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 58/61] Input: gtco - fix potential out-of-bound access Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 39/61] MIPS: BCM63XX: allow NULL clock for clk_get_rate Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 19/61] media: uvcvideo: Prevent heap overflow when accessing mapped controls Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 12/61] scsi: zfcp: fix missing trace records for early returns in TMF eh handlers Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 54/61] sctp: do not peel off an assoc from one netns to another one Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 13/61] scsi: zfcp: fix payload with full FCP_RSP IU in SCSI trace records Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 46/61] Input: xpad - don't depend on endpoint order Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 35/61] xfs: fix incorrect log_flushed on fsync Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 18/61] block: Relax a check in blk_start_queue() Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 33/61] driver core: bus: Fix a potential double free Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 45/61] Input: xpad - add support for Xbox One controllers Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 42/61] ipv6: fix memory leak with multiple tables during netns destruction Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 09/61] scsi: zfcp: add handling for FCP_RESID_OVER to the fcp ingress path Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 25/61] IB/{qib, hfi1}: Avoid flow control testing for RDMA write operation Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 31/61] powerpc/44x: Fix mask and shift to zero bug Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 14/61] scsi: zfcp: trace HBA FSF response by default on dismiss or timedout late response Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 17/61] drm/ttm: Fix accounting error when fail to get pages for pool Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 23/61] usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 15/61] scsi: mac_esp: Fix PIO transfers for MESSAGE IN phase Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 61/61] mac80211: Fix null dereference in ieee80211_key_link() Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 48/61] smsc95xx: Configure pause time to 0xffff when tx flow control enabled Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 51/61] Input: i8042 - add Gigabyte P57 to the keyboard reset table Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 21/61] media: em28xx: calculate left volume level correctly Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 20/61] media: lirc_zilog: driver only sends LIRCCODE Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 29/61] [SCSI] qla2xxx: Add mutex around optrom calls to serialize accesses Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 16/61] cs5536: add support for IDE controller variant Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 50/61] KVM: async_pf: Fix #DF due to inject "Page not Present" and "Page Ready" exceptions simultaneously Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 36/61] l2tp: prevent creation of sessions on terminated tunnels Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 24/61] usb: Add device quirk for Logitech HD Pro Webcam C920-C Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 55/61] USB: serial: console: fix use-after-free after failed setup Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 43/61] ipv6: fix typo in fib6_net_exit() Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 11/61] scsi: zfcp: fix passing fsf_req to SCSI trace on TMF to correlate with HBA Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 53/61] ext4: fix fencepost in s_first_meta_bg validation Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 60/61] mac80211: don't compare TKIP TX MIC key in reinstall prevention Ben Hutchings
2017-11-22  2:11 ` [PATCH 3.2 56/61] [media] cx231xx-cards: fix NULL-deref on missing association descriptor Ben Hutchings
2017-11-22  2:11 ` Ben Hutchings [this message]
2017-11-22 14:59 ` [PATCH 3.2 00/61] 3.2.96-rc1 review Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=lsq.1511316666.702046883@decadent.org.uk \
    --to=ben@decadent.org.uk \
    --cc=akpm@linux-foundation.org \
    --cc=bblock@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maier@linux.vnet.ibm.com \
    --cc=martin.petersen@oracle.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®