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>
This commit is contained in:
Paolo Bonzini 2018-03-08 16:17:59 +01:00
parent 05b6cc4ae2
commit 4397a01847
3 changed files with 8 additions and 2 deletions

View file

@ -216,6 +216,9 @@ static void test_unaligned_write_same(void)
const uint8_t write_same_cdb_2[VIRTIO_SCSI_CDB_SIZE] = {
0x41, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x33, 0x00, 0x00
};
const uint8_t write_same_cdb_ndob[VIRTIO_SCSI_CDB_SIZE] = {
0x41, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x33, 0x00, 0x00
};
vs = qvirtio_scsi_pci_init(PCI_SLOT);
@ -225,6 +228,9 @@ static void test_unaligned_write_same(void)
g_assert_cmphex(0, ==,
virtio_scsi_do_command(vs, write_same_cdb_2, NULL, 0, buf2, 512, NULL));
g_assert_cmphex(0, ==,
virtio_scsi_do_command(vs, write_same_cdb_ndob, NULL, 0, NULL, 0, NULL));
qvirtio_scsi_pci_free(vs);
}