]> git.ipfire.org Git - thirdparty/qemu.git/commit
scsi-block: Don't skip callback for sgio error status/driver_status
authorKevin Wolf <kwolf@redhat.com>
Wed, 31 Jul 2024 12:32:05 +0000 (14:32 +0200)
committerKevin Wolf <kwolf@redhat.com>
Tue, 6 Aug 2024 18:12:39 +0000 (20:12 +0200)
commit622a70161ac258e4a166a7dca4b5be267e0652d9
tree9b38aaf40479c9d032c0a172173d9d6738b34892
parentcfe0880835cd364b590ffd27ef8dbd2ad8838bc5
scsi-block: Don't skip callback for sgio error status/driver_status

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>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Message-ID: <20240731123207.27636-3-kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
hw/scsi/scsi-disk.c