summary refs log tree commit diff stats
path: root/hw/scsi/scsi-bus.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2018-03-08 16:17:59 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2018-03-12 16:12:46 +0100
commit4397a018473ae589be959ba93cb491cbd77fe789 (patch)
tree237ee0f3aa16d0805f9f3544d1652dcf9ef7e72f /hw/scsi/scsi-bus.c
parent05b6cc4ae2efbafad9b45a93bccfcae51d018043 (diff)
downloadfocaccia-qemu-4397a018473ae589be959ba93cb491cbd77fe789.tar.gz
focaccia-qemu-4397a018473ae589be959ba93cb491cbd77fe789.zip
scsi: support NDOB (no data-out buffer) for WRITE SAME commands
A NDOB bit set to one specifies that the disk shall not transfer data
from the data-out buffer and shall process the command as if the data-out
buffer contained user data set to all zeroes.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/scsi/scsi-bus.c')
-rw-r--r--hw/scsi/scsi-bus.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
index 1eaeffc830..9646743a7d 100644
--- a/hw/scsi/scsi-bus.c
+++ b/hw/scsi/scsi-bus.c
@@ -944,7 +944,7 @@ static int scsi_req_xfer(SCSICommand *cmd, SCSIDevice *dev, uint8_t *buf)
         break;
     case WRITE_SAME_10:
     case WRITE_SAME_16:
-        cmd->xfer = dev->blocksize;
+        cmd->xfer = buf[1] & 1 ? 0 : dev->blocksize;
         break;
     case READ_CAPACITY_10:
         cmd->xfer = 8;