diff options
author | Dmitry Fomichev <dmitry.fomichev@wdc.com> | 2020-08-12 07:51:22 +0900 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2020-09-30 19:09:20 +0200 |
commit | afff2db61f6ace9bb2c4d81c7c57601f5c009acd (patch) | |
tree | f5d6a7519c1f578639019cdabdfb36f3f71a45db /include | |
parent | b7dd40d40bfa44536bee4aa4d643b26621097d27 (diff) | |
download | qemu-afff2db61f6ace9bb2c4d81c7c57601f5c009acd.zip qemu-afff2db61f6ace9bb2c4d81c7c57601f5c009acd.tar.gz qemu-afff2db61f6ace9bb2c4d81c7c57601f5c009acd.tar.bz2 |
scsi-generic: Fix HM-zoned device scan
Several important steps during device scan depend on SCSI type of the
device. For example, max_transfer property is only determined and
assigned if the device has the type of TYPE_DISK.
Host-managed ZBC disks retain most of the properties of regular SCSI
drives, but they have their own SCSI device type, 0x14. This prevents
the proper assignment of max_transfer property for HM-zoned devices in
scsi-generic driver leading to I/O errors if the maximum i/o size
calculated at the guest exceeds the host value.
To fix this, define TYPE_ZBC to have the standard value from SCSI ZBC
standard spec. Several scan steps that were previously done only for
TYPE_DISK devices, are now performed for the SCSI devices having
TYPE_ZBC too.
Reported-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
Message-Id: <20200811225122.17342-3-dmitry.fomichev@wdc.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/scsi/constants.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/scsi/constants.h b/include/scsi/constants.h index 8741760..2a32c08 100644 --- a/include/scsi/constants.h +++ b/include/scsi/constants.h @@ -218,6 +218,7 @@ #define TYPE_ENCLOSURE 0x0d /* Enclosure Services Device */ #define TYPE_RBC 0x0e /* Simplified Direct-Access Device */ #define TYPE_OSD 0x11 /* Object-storage Device */ +#define TYPE_ZBC 0x14 /* Host-managed Zoned SCSI Device */ #define TYPE_WLUN 0x1e /* Well known LUN */ #define TYPE_NOT_PRESENT 0x1f #define TYPE_INACTIVE 0x20 |