From: Kevin Wolf <kwolf@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, pbonzini@redhat.com, fam@euphon.net,
stefanha@redhat.com, qemu-devel@nongnu.org
Subject: [PATCH 2/4] scsi-block: Don't skip callback for sgio error status/driver_status
Date: Mon, 29 Jul 2024 11:46:59 +0200 [thread overview]
Message-ID: <20240729094702.50282-3-kwolf@redhat.com> (raw)
In-Reply-To: <20240729094702.50282-1-kwolf@redhat.com>
Instead of calling into scsi_handle_rw_error() directly from
scsi_block_sgio_complete() and skipping the normal callback, go through
the normal cleanup path by calling the callback with a positive error
value.
The important difference here is not only that the code path is cleaner,
but that the callbacks set r->req.aiocb = NULL. If we skip setting this
and the error action is BLOCK_ERROR_ACTION_STOP, resuming the VM runs
into an assertion failure in scsi_read_data() or scsi_write_data()
because the dangling aiocb pointer is unexpected.
Fixes: a108557bbf ("scsi: inline sg_io_sense_from_errno() into the callers.")
Buglink: https://issues.redhat.com/browse/RHEL-50000
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
hw/scsi/scsi-disk.c | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index 3ff6798bde..6e1a5c98df 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -2832,16 +2832,6 @@ static void scsi_block_sgio_complete(void *opaque, int ret)
} else {
ret = io_hdr->status;
}
-
- if (ret > 0) {
- if (scsi_handle_rw_error(r, ret, true)) {
- scsi_req_unref(&r->req);
- return;
- }
-
- /* Ignore error. */
- ret = 0;
- }
}
req->cb(req->cb_opaque, ret);
--
2.45.2
next prev parent reply other threads:[~2024-07-29 9:48 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-29 9:46 [PATCH 0/4] scsi-block: Fix error handling with r/werror=stop Kevin Wolf
2024-07-29 9:46 ` [PATCH 1/4] scsi-disk: Use positive return value for status in dma_readv/writev Kevin Wolf
2024-07-29 9:46 ` Kevin Wolf [this message]
2024-07-29 9:47 ` [PATCH 3/4] scsi-disk: Add warning comments that host_status errors take a shortcut Kevin Wolf
2024-07-29 9:47 ` [PATCH 4/4] scsi-disk: Always report RESERVATION_CONFLICT to guest Kevin Wolf
2024-07-29 11:55 ` Paolo Bonzini
2024-07-29 12:20 ` Kevin Wolf
2024-07-29 12:26 ` Paolo Bonzini
2024-07-29 16:55 ` Kevin Wolf
2024-07-30 6:06 ` Paolo Bonzini
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=20240729094702.50282-3-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=fam@euphon.net \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@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 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.