All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Christie <michael.christie@oracle.com>
To: jgross@suse.com, njavali@marvell.com, pbonzini@redhat.com,
	jasowang@redhat.com, mst@redhat.com, stefanha@redhat.com,
	oneukum@suse.com, mrochs@linux.ibm.com, ukrishn@linux.ibm.com,
	martin.petersen@oracle.com, linux-scsi@vger.kernel.org,
	james.bottomley@hansenpartnership.com
Cc: Mike Christie <michael.christie@oracle.com>
Subject: [PATCH v2 05/10] scsi: virtio_scsi: Drop DID_NEXUS_FAILURE use
Date: Thu, 11 Aug 2022 20:00:22 -0500	[thread overview]
Message-ID: <20220812010027.8251-6-michael.christie@oracle.com> (raw)
In-Reply-To: <20220812010027.8251-1-michael.christie@oracle.com>

DID_NEXUS_FAILURE is internal to the SCSI layer. Drivers must not use it
because:

1. It's not propagated upwards, so SG IO/passthrough users will not see an
error and think a command was successful.

2. There is no handling for them in scsi_decide_disposition so it results
in the scsi eh running.

It looks like virtio_scsi gets this when something like qemu returns
VIRTIO_SCSI_S_NEXUS_FAILURE. It looks like qemu returns that error code
if host OS returns DID_NEXUS_FAILURE (qemu's internal
SCSI_HOST_RESERVATION_ERROR maps to DID_NEXUS_FAILURE). This shouldn't
happen for linux since we don't propagate that error code to userspace.

This has us convert VIRTIO_SCSI_S_NEXUS_FAILURE to a
SAM_STAT_RESERVATION_CONFLICT in case some other virt layer is returning
it. In that case we will still get the reservation confict failure we
expect.

Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Mike Christie <michael.christie@oracle.com>
---
 drivers/scsi/virtio_scsi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
index 112d8c3962b0..00cf6743db8c 100644
--- a/drivers/scsi/virtio_scsi.c
+++ b/drivers/scsi/virtio_scsi.c
@@ -144,7 +144,7 @@ static void virtscsi_complete_cmd(struct virtio_scsi *vscsi, void *buf)
 		set_host_byte(sc, DID_BAD_TARGET);
 		break;
 	case VIRTIO_SCSI_S_NEXUS_FAILURE:
-		set_host_byte(sc, DID_NEXUS_FAILURE);
+		set_status_byte(sc, SAM_STAT_RESERVATION_CONFLICT);
 		break;
 	default:
 		scmd_printk(KERN_WARNING, sc, "Unknown response %d",
-- 
2.18.2


  parent reply	other threads:[~2022-08-12  1:00 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-12  1:00 [PATCH v2 00/10] scsi: Fix internal host code use Mike Christie
2022-08-12  1:00 ` [PATCH v2 01/10] scsi: xen: Drop use of internal host codes Mike Christie
2022-08-15  6:12   ` Juergen Gross
2022-08-12  1:00 ` [PATCH v2 02/10] scsi: storvsc: Drop DID_TARGET_FAILURE use Mike Christie
2022-08-12  1:00 ` [PATCH v2 03/10] scsi: uas: " Mike Christie
2022-08-12  1:00 ` [PATCH v2 04/10] scsi: virtio_scsi: " Mike Christie
2022-08-12  1:00 ` Mike Christie [this message]
2022-08-12  1:00 ` [PATCH v2 06/10] scsi: qla2xxx: " Mike Christie
2022-08-19 19:42   ` Himanshu Madhani
2022-08-12  1:00 ` [PATCH v2 07/10] scsi: cxlflash: Drop DID_ALLOC_FAILURE use Mike Christie
2022-08-12  1:00 ` [PATCH v2 08/10] scsi: Add error codes for internal scsi-ml use Mike Christie
2022-08-12  1:00 ` [PATCH v2 09/10] scsi: Convert scsi_decide_disposition to use SCSIML_STAT Mike Christie
2022-08-12  1:00 ` [PATCH v2 10/10] scsi: Remove useless host error codes Mike Christie
2022-09-07  2:14 ` [PATCH v2 00/10] scsi: Fix internal host code use Martin K. Petersen

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=20220812010027.8251-6-michael.christie@oracle.com \
    --to=michael.christie@oracle.com \
    --cc=james.bottomley@hansenpartnership.com \
    --cc=jasowang@redhat.com \
    --cc=jgross@suse.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=mrochs@linux.ibm.com \
    --cc=mst@redhat.com \
    --cc=njavali@marvell.com \
    --cc=oneukum@suse.com \
    --cc=pbonzini@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=ukrishn@linux.ibm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.