• P
    virtio-scsi: do not compare 32-bit QEMU tags against 64-bit virtio-scsi tags · 4dd7c82c
    Paolo Bonzini 提交于
    This patch fixes a problem in handling task management functions
    in virtio-scsi.  The cause of the problem is a mismatch between
    the size of the tag in QEMU (32-bit) and virtio-scsi (64-bit).
    Changing the QEMU size is hard because the migration format
    uses 32 bits to store the tag; so just don't use the QEMU tag
    (virtio-scsi only uses the tag for task management functions
    anyway) and look up the full 64-bit tag in the hba_private field.
    
    The reproducer is a bit obscure.  If you cause an I/O timeout
    (for example with rerror=stop and doing 'cont' on the monitor
    continuously without fixing the error), sooner or later the
    guest will try to abort the command and reissue it.  At this
    point, QEMU will report _two_ errors instead of one when you
    hit 'c', because the first error has not been canceled correctly.
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    4dd7c82c
virtio-scsi.c 21.9 KB