linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: "Matthew R. Ochs" <mrochs@linux.vnet.ibm.com>
To: linux-scsi@vger.kernel.org,
	James Bottomley <James.Bottomley@HansenPartnership.com>,
	"Nicholas A. Bellinger" <nab@linux-iscsi.org>,
	Brian King <brking@linux.vnet.ibm.com>,
	Ian Munsie <imunsie@au1.ibm.com>,
	Daniel Axtens <dja@ozlabs.au.ibm.com>,
	Andrew Donnellan <andrew.donnellan@au1.ibm.com>,
	Tomas Henzl <thenzl@redhat.com>,
	David Laight <David.Laight@ACULAB.COM>
Cc: Michael Neuling <mikey@neuling.org>,
	linuxppc-dev@lists.ozlabs.org,
	"Manoj N. Kumar" <manoj@linux.vnet.ibm.com>
Subject: [PATCH v5 05/34] cxlflash: Fix data corruption when vLUN used over multiple cards
Date: Thu,  1 Oct 2015 10:55:08 -0500	[thread overview]
Message-ID: <1443714908-13176-1-git-send-email-mrochs@linux.vnet.ibm.com> (raw)
In-Reply-To: <1443714773-9176-1-git-send-email-mrochs@linux.vnet.ibm.com>

If the same virtual LUN is accessed over multiple cards, only accesses
made over the first card will be valid. Accesses made over the second
card will go to the wrong LUN causing data corruption.

This is because the global LUN's mode word was being used to determine
whether the LUN table for that card needs to be programmed. The mode
word would be setup by the first card, causing the LUN table for the
second card to not be programmed.

By unconditionally initializing the LUN table (not depending on the
mode word), the problem is avoided.

Signed-off-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
Signed-off-by: Manoj N. Kumar <manoj@linux.vnet.ibm.com>
Reviewed-by: Brian King <brking@linux.vnet.ibm.com>
---
 drivers/scsi/cxlflash/vlun.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/scsi/cxlflash/vlun.c b/drivers/scsi/cxlflash/vlun.c
index 68994c4..96b074f 100644
--- a/drivers/scsi/cxlflash/vlun.c
+++ b/drivers/scsi/cxlflash/vlun.c
@@ -915,16 +915,9 @@ int cxlflash_disk_virtual_open(struct scsi_device *sdev, void *arg)
 
 	pr_debug("%s: ctxid=%llu ls=0x%llx\n", __func__, ctxid, lun_size);
 
+	/* Setup the LUNs block allocator on first call */
 	mutex_lock(&gli->mutex);
 	if (gli->mode == MODE_NONE) {
-		/* Setup the LUN table and block allocator on first call */
-		rc = init_luntable(cfg, lli);
-		if (rc) {
-			dev_err(dev, "%s: call to init_luntable failed "
-				"rc=%d!\n", __func__, rc);
-			goto err0;
-		}
-
 		rc = init_vlun(lli);
 		if (rc) {
 			dev_err(dev, "%s: call to init_vlun failed rc=%d!\n",
@@ -942,6 +935,13 @@ int cxlflash_disk_virtual_open(struct scsi_device *sdev, void *arg)
 	}
 	mutex_unlock(&gli->mutex);
 
+	rc = init_luntable(cfg, lli);
+	if (rc) {
+		dev_err(dev, "%s: call to init_luntable failed rc=%d!\n",
+			__func__, rc);
+		goto err1;
+	}
+
 	ctxi = get_context(cfg, rctxid, lli, 0);
 	if (unlikely(!ctxi)) {
 		dev_err(dev, "%s: Bad context! (%llu)\n", __func__, ctxid);
-- 
2.1.0

  parent reply	other threads:[~2015-10-01 15:56 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-01 15:52 [PATCH v5 00/34] cxlflash: Miscellaneous bug fixes and corrections Matthew R. Ochs
2015-10-01 15:54 ` [PATCH v5 01/34] cxlflash: Fix to avoid invalid port_sel value Matthew R. Ochs
2015-10-02 12:43   ` Tomas Henzl
2015-10-01 15:54 ` [PATCH v5 02/34] cxlflash: Replace magic numbers with literals Matthew R. Ochs
2015-10-02 12:44   ` Tomas Henzl
2015-10-01 15:54 ` [PATCH v5 03/34] cxlflash: Fix read capacity timeout Matthew R. Ochs
2015-10-02 12:49   ` Tomas Henzl
2015-10-01 15:55 ` [PATCH v5 04/34] cxlflash: Fix potential oops following LUN removal Matthew R. Ochs
2015-10-02 12:55   ` Tomas Henzl
2015-10-01 15:55 ` Matthew R. Ochs [this message]
2015-10-02 13:03   ` [PATCH v5 05/34] cxlflash: Fix data corruption when vLUN used over multiple cards Tomas Henzl
2015-10-01 15:55 ` [PATCH v5 06/34] cxlflash: Fix to avoid sizeof(bool) Matthew R. Ochs
2015-10-02 13:06   ` Tomas Henzl
2015-10-01 15:55 ` [PATCH v5 07/34] cxlflash: Fix context encode mask width Matthew R. Ochs
2015-10-02 13:07   ` Tomas Henzl
2015-10-01 15:55 ` [PATCH v5 08/34] cxlflash: Fix to avoid CXL services during EEH Matthew R. Ochs
2015-10-02 13:14   ` Tomas Henzl
2015-10-01 15:55 ` [PATCH v5 09/34] cxlflash: Correct naming of limbo state and waitq Matthew R. Ochs
2015-10-02 13:15   ` Tomas Henzl
2015-10-01 15:55 ` [PATCH v5 10/34] cxlflash: Make functions static Matthew R. Ochs
2015-10-02 13:16   ` Tomas Henzl
2015-10-01 15:55 ` [PATCH v5 11/34] cxlflash: Refine host/device attributes Matthew R. Ochs
2015-10-01 15:56 ` [PATCH v5 12/34] cxlflash: Fix to avoid spamming the kernel log Matthew R. Ochs
2015-10-01 15:56 ` [PATCH v5 13/34] cxlflash: Fix to avoid stall while waiting on TMF Matthew R. Ochs
2015-10-01 15:56 ` [PATCH v5 14/34] cxlflash: Fix location of setting resid Matthew R. Ochs
2015-10-01 15:56 ` [PATCH v5 15/34] cxlflash: Fix host link up event handling Matthew R. Ochs
2015-10-01 15:56 ` [PATCH v5 16/34] cxlflash: Fix async interrupt bypass logic Matthew R. Ochs
2015-10-01 15:56 ` [PATCH v5 17/34] cxlflash: Remove dual port online dependency Matthew R. Ochs
2015-10-02  1:00   ` Daniel Axtens
2015-10-01 15:56 ` [PATCH v5 18/34] cxlflash: Fix AFU version access/storage and add check Matthew R. Ochs
2015-10-02  0:56   ` Daniel Axtens
2015-10-02  1:18     ` Matthew R. Ochs
2015-10-02  4:17       ` Daniel Axtens
2015-10-01 15:57 ` [PATCH v5 19/34] cxlflash: Correct usage of scsi_host_put() Matthew R. Ochs
2015-10-01 15:57 ` [PATCH v5 20/34] cxlflash: Fix to prevent workq from accessing freed memory Matthew R. Ochs
2015-10-01 15:57 ` [PATCH v5 21/34] cxlflash: Correct behavior in device reset handler following EEH Matthew R. Ochs
2015-10-01 15:57 ` [PATCH v5 22/34] cxlflash: Remove unnecessary scsi_block_requests Matthew R. Ochs
2015-10-01 15:57 ` [PATCH v5 23/34] cxlflash: Fix function prolog parameters and return codes Matthew R. Ochs
2015-10-01 15:58 ` [PATCH v5 24/34] cxlflash: Fix MMIO and endianness errors Matthew R. Ochs
2015-10-01 15:58 ` [PATCH v5 25/34] cxlflash: Fix to prevent EEH recovery failure Matthew R. Ochs
2015-10-01 15:58 ` [PATCH v5 26/34] cxlflash: Correct spelling, grammar, and alignment mistakes Matthew R. Ochs
2015-10-01 15:58 ` [PATCH v5 27/34] cxlflash: Fix to prevent stale AFU RRQ Matthew R. Ochs
2015-10-01 15:58 ` [PATCH v5 28/34] MAINTAINERS: Add cxlflash driver Matthew R. Ochs
2015-10-01 15:58 ` [PATCH v5 29/34] cxlflash: Fix to double the delay each time Matthew R. Ochs
2015-10-01 15:58 ` [PATCH v5 30/34] cxlflash: Fix to avoid corrupting adapter fops Matthew R. Ochs
2015-10-01 15:58 ` [PATCH v5 31/34] cxlflash: Correct trace string Matthew R. Ochs
2015-10-01 15:58 ` [PATCH v5 32/34] cxlflash: Fix to avoid potential deadlock on EEH Matthew R. Ochs
2015-10-01 15:58 ` [PATCH v5 33/34] cxlflash: Fix to avoid leaving dangling interrupt resources Matthew R. Ochs
2015-10-01 22:17   ` Manoj Kumar
2015-10-06  3:43   ` Andrew Donnellan
2015-10-01 15:58 ` [PATCH v5 34/34] cxlflash: Fix to escalate to LINK_RESET on login timeout Matthew R. Ochs
2015-10-21 19:38   ` Brian King
2015-10-02 17:07 ` [PATCH v5 00/34] cxlflash: Miscellaneous bug fixes and corrections Matthew R. Ochs

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=1443714908-13176-1-git-send-email-mrochs@linux.vnet.ibm.com \
    --to=mrochs@linux.vnet.ibm.com \
    --cc=David.Laight@ACULAB.COM \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=andrew.donnellan@au1.ibm.com \
    --cc=brking@linux.vnet.ibm.com \
    --cc=dja@ozlabs.au.ibm.com \
    --cc=imunsie@au1.ibm.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=manoj@linux.vnet.ibm.com \
    --cc=mikey@neuling.org \
    --cc=nab@linux-iscsi.org \
    --cc=thenzl@redhat.com \
    /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;
as well as URLs for NNTP newsgroup(s).