Blame SOURCES/kvm-scsi-disk-Block-Device-Characteristics-emulation-fix.patch

383d26
From 691b2859207e4cee5e86f0cb86a7a81b9efa2bda Mon Sep 17 00:00:00 2001
383d26
From: Paolo Bonzini <pbonzini@redhat.com>
383d26
Date: Wed, 7 Nov 2018 18:00:03 +0100
383d26
Subject: [PATCH 29/34] scsi-disk: Block Device Characteristics emulation fix
383d26
MIME-Version: 1.0
383d26
Content-Type: text/plain; charset=UTF-8
383d26
Content-Transfer-Encoding: 8bit
383d26
383d26
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
383d26
Message-id: <20181107180007.22954-6-pbonzini@redhat.com>
383d26
Patchwork-id: 82945
383d26
O-Subject: [RHEL7.6.z qemu-kvm-rhev PATCH 5/9] scsi-disk: Block Device Characteristics emulation fix
383d26
Bugzilla: 1566195
383d26
RH-Acked-by: Max Reitz <mreitz@redhat.com>
383d26
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
383d26
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
383d26
383d26
From: Daniel Henrique Barboza <danielhb413@gmail.com>
383d26
383d26
The current BDC VPD page (page 0xb1) is too short. This can be
383d26
seen running sg_utils:
383d26
383d26
$ sg_vpd --page=bdc /dev/sda
383d26
Block device characteristics VPD page (SBC):
383d26
Block device characteristics VPD page length too short=8
383d26
383d26
By the SCSI spec, the expected size of the SBC page is 0x40.
383d26
There is no telling how the guest will behave with a shorter
383d26
message - it can ignore it, or worse, make (wrong)
383d26
assumptions.
383d26
383d26
This patch fixes the emulation by setting the size to 0x40.
383d26
This is the output of the previous sg_vpd command after
383d26
applying it:
383d26
383d26
$ sg_vpd --page=bdc /dev/sda -v
383d26
    inquiry cdb: 12 01 b1 00 fc 00
383d26
Block device characteristics VPD page (SBC):
383d26
   [PQual=0  Peripheral device type: disk]
383d26
  Medium rotation rate is not reported
383d26
  Product type: Not specified
383d26
  WABEREQ=0
383d26
  WACEREQ=0
383d26
  Nominal form factor not reported
383d26
  FUAB=0
383d26
  VBULS=0
383d26
383d26
To improve readability, this patch also adds the VBULS value
383d26
explictly and add comments on the existing fields we're
383d26
setting.
383d26
383d26
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
383d26
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
383d26
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
383d26
(cherry picked from commit 740842c9656cd5dbc9ccf2ea0c3a74f0ba35144a)
383d26
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
383d26
---
383d26
 hw/scsi/scsi-disk.c | 7 ++++---
383d26
 1 file changed, 4 insertions(+), 3 deletions(-)
383d26
383d26
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
383d26
index b3d53ec..b8a27d6 100644
383d26
--- a/hw/scsi/scsi-disk.c
383d26
+++ b/hw/scsi/scsi-disk.c
383d26
@@ -774,11 +774,12 @@ int scsi_disk_emulate_vpd_page(SCSIRequest *req, uint8_t *outbuf)
383d26
     }
383d26
     case 0xb1: /* block device characteristics */
383d26
     {
383d26
-        buflen = 8;
383d26
+        buflen = 0x40;
383d26
         outbuf[4] = (s->rotation_rate >> 8) & 0xff;
383d26
         outbuf[5] = s->rotation_rate & 0xff;
383d26
-        outbuf[6] = 0;
383d26
-        outbuf[7] = 0;
383d26
+        outbuf[6] = 0; /* PRODUCT TYPE */
383d26
+        outbuf[7] = 0; /* WABEREQ | WACEREQ | NOMINAL FORM FACTOR */
383d26
+        outbuf[8] = 0; /* VBULS */
383d26
         break;
383d26
     }
383d26
     case 0xb2: /* thin provisioning */
383d26
-- 
383d26
1.8.3.1
383d26