$NetBSD: patch-hw_scsi_scsi-disk.c,v 1.1 2020/09/27 21:29:57 jakllsch Exp $

Fill in more of SCSI disk block size reports to guest. Allows use of
sector sizes outside range of 256 to 32768.

--- hw/scsi/scsi-disk.c.orig	2020-08-11 19:17:15.000000000 +0000
+++ hw/scsi/scsi-disk.c
@@ -1293,9 +1293,9 @@ static int scsi_disk_emulate_mode_sense(
         p[2] = (nb_sectors >> 8) & 0xff;
         p[3] = nb_sectors & 0xff;
         p[4] = 0; /* reserved */
-        p[5] = 0; /* bytes 5-7 are the sector size in bytes */
-        p[6] = s->qdev.blocksize >> 8;
-        p[7] = 0;
+        p[5] = (s->qdev.blocksize >> 16) & 0xff; /* bytes 5-7 are the sector size in bytes */
+        p[6] = (s->qdev.blocksize >> 8) & 0xff;
+        p[7] = s->qdev.blocksize & 0xff;
         p += 8;
     }
 
@@ -1993,10 +1993,10 @@ static int32_t scsi_disk_emulate_command
         outbuf[1] = (nb_sectors >> 16) & 0xff;
         outbuf[2] = (nb_sectors >> 8) & 0xff;
         outbuf[3] = nb_sectors & 0xff;
-        outbuf[4] = 0;
-        outbuf[5] = 0;
-        outbuf[6] = s->qdev.blocksize >> 8;
-        outbuf[7] = 0;
+        outbuf[4] = (s->qdev.blocksize >> 24) & 0xff;;
+        outbuf[5] = (s->qdev.blocksize >> 16) & 0xff;
+        outbuf[6] = (s->qdev.blocksize >> 8) & 0xff;
+        outbuf[7] = s->qdev.blocksize & 0xff;;
         break;
     case REQUEST_SENSE:
         /* Just return "NO SENSE".  */
@@ -2062,10 +2062,10 @@ static int32_t scsi_disk_emulate_command
             outbuf[5] = (nb_sectors >> 16) & 0xff;
             outbuf[6] = (nb_sectors >> 8) & 0xff;
             outbuf[7] = nb_sectors & 0xff;
-            outbuf[8] = 0;
-            outbuf[9] = 0;
-            outbuf[10] = s->qdev.blocksize >> 8;
-            outbuf[11] = 0;
+            outbuf[8] = (s->qdev.blocksize >> 24) & 0xff;
+            outbuf[9] = (s->qdev.blocksize >> 16) & 0xff;
+            outbuf[10] = (s->qdev.blocksize >> 8) & 0xff;
+            outbuf[11] = s->qdev.blocksize & 0xff;
             outbuf[12] = 0;
             outbuf[13] = get_physical_block_exp(&s->qdev.conf);
 
