* [Qemu-devel] [PATCH 0/2] scsi-disk: Fix an assertion failure
@ 2015-07-29 8:45 Fam Zheng
2015-07-29 8:45 ` [Qemu-devel] [PATCH 1/2] scsi-disk: Fix assertion failure on WRITE SAME Fam Zheng
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Fam Zheng @ 2015-07-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, qemu-stable
The first patch fixes the bug, and second patch adds a regression test case.
Fam Zheng (2):
scsi-disk: Fix assertion failure on WRITE SAME
virtio-scsi-test: Add test case for tail unaligned WRITE SAME
hw/scsi/scsi-disk.c | 3 +++
tests/virtio-scsi-test.c | 12 +++++++++---
2 files changed, 12 insertions(+), 3 deletions(-)
--
2.4.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 1/2] scsi-disk: Fix assertion failure on WRITE SAME
2015-07-29 8:45 [Qemu-devel] [PATCH 0/2] scsi-disk: Fix an assertion failure Fam Zheng
@ 2015-07-29 8:45 ` Fam Zheng
2015-07-29 8:45 ` [Qemu-devel] [PATCH 2/2] virtio-scsi-test: Add test case for tail unaligned " Fam Zheng
2015-07-29 10:58 ` [Qemu-devel] [PATCH 0/2] scsi-disk: Fix an assertion failure Paolo Bonzini
2 siblings, 0 replies; 4+ messages in thread
From: Fam Zheng @ 2015-07-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, qemu-stable
The last portion of an unaligned WRITE SAME command could fail the
assertion in bdrv_aligned_pwritev:
assert(!qiov || bytes == qiov->size);
Because we updated data->iov.iov_len right above this if block, but
data->qiov still has the old size.
Reinitialize the qiov to make them equal and keep block layer happy.
Cc: qemu-stable@nongnu.org
Signed-off-by: Fam Zheng <famz@redhat.com>
---
hw/scsi/scsi-disk.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index 64f0694..3f92079 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -1683,6 +1683,9 @@ static void scsi_write_same_complete(void *opaque, int ret)
if (data->iov.iov_len) {
block_acct_start(blk_get_stats(s->qdev.conf.blk), &r->acct,
data->iov.iov_len, BLOCK_ACCT_WRITE);
+ /* blk_aio_write doesn't like the qiov size being different from
+ * nb_sectors, make sure they match. */
+ qemu_iovec_init_external(&data->qiov, &data->iov, 1);
r->req.aiocb = blk_aio_writev(s->qdev.conf.blk, data->sector,
&data->qiov, data->iov.iov_len / 512,
scsi_write_same_complete, data);
--
2.4.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 2/2] virtio-scsi-test: Add test case for tail unaligned WRITE SAME
2015-07-29 8:45 [Qemu-devel] [PATCH 0/2] scsi-disk: Fix an assertion failure Fam Zheng
2015-07-29 8:45 ` [Qemu-devel] [PATCH 1/2] scsi-disk: Fix assertion failure on WRITE SAME Fam Zheng
@ 2015-07-29 8:45 ` Fam Zheng
2015-07-29 10:58 ` [Qemu-devel] [PATCH 0/2] scsi-disk: Fix an assertion failure Paolo Bonzini
2 siblings, 0 replies; 4+ messages in thread
From: Fam Zheng @ 2015-07-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, qemu-stable
Signed-off-by: Fam Zheng <famz@redhat.com>
---
tests/virtio-scsi-test.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/tests/virtio-scsi-test.c b/tests/virtio-scsi-test.c
index 11ccdd6..afd22c6 100644
--- a/tests/virtio-scsi-test.c
+++ b/tests/virtio-scsi-test.c
@@ -221,9 +221,12 @@ static void hotplug(void)
static void test_unaligned_write_same(void)
{
QVirtIOSCSI *vs;
- uint8_t buf[512] = { 0 };
- const uint8_t write_same_cdb[CDB_SIZE] = { 0x41, 0x00, 0x00, 0x00, 0x00,
+ uint8_t buf1[512] = { 0 };
+ uint8_t buf2[512] = { 1 };
+ const uint8_t write_same_cdb_1[CDB_SIZE] = { 0x41, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x02, 0x00 };
+ const uint8_t write_same_cdb_2[CDB_SIZE] = { 0x41, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x33, 0x00, 0x00 };
qvirtio_scsi_start("-drive file=blkdebug::null-co://,if=none,id=dr1"
",format=raw,file.align=4k "
@@ -231,7 +234,10 @@ static void test_unaligned_write_same(void)
vs = qvirtio_scsi_pci_init(PCI_SLOT);
g_assert_cmphex(0, ==,
- virtio_scsi_do_command(vs, write_same_cdb, NULL, 0, buf, 512));
+ virtio_scsi_do_command(vs, write_same_cdb_1, NULL, 0, buf1, 512));
+
+ g_assert_cmphex(0, ==,
+ virtio_scsi_do_command(vs, write_same_cdb_2, NULL, 0, buf2, 512));
qvirtio_scsi_pci_free(vs);
qvirtio_scsi_stop();
--
2.4.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH 0/2] scsi-disk: Fix an assertion failure
2015-07-29 8:45 [Qemu-devel] [PATCH 0/2] scsi-disk: Fix an assertion failure Fam Zheng
2015-07-29 8:45 ` [Qemu-devel] [PATCH 1/2] scsi-disk: Fix assertion failure on WRITE SAME Fam Zheng
2015-07-29 8:45 ` [Qemu-devel] [PATCH 2/2] virtio-scsi-test: Add test case for tail unaligned " Fam Zheng
@ 2015-07-29 10:58 ` Paolo Bonzini
2 siblings, 0 replies; 4+ messages in thread
From: Paolo Bonzini @ 2015-07-29 10:58 UTC (permalink / raw)
To: Fam Zheng, qemu-devel; +Cc: qemu-stable
On 29/07/2015 10:45, Fam Zheng wrote:
> The first patch fixes the bug, and second patch adds a regression test case.
>
>
>
> Fam Zheng (2):
> scsi-disk: Fix assertion failure on WRITE SAME
> virtio-scsi-test: Add test case for tail unaligned WRITE SAME
>
> hw/scsi/scsi-disk.c | 3 +++
> tests/virtio-scsi-test.c | 12 +++++++++---
> 2 files changed, 12 insertions(+), 3 deletions(-)
>
Thanks, queued for 2.5.
Paolo
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-07-29 10:59 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-29 8:45 [Qemu-devel] [PATCH 0/2] scsi-disk: Fix an assertion failure Fam Zheng
2015-07-29 8:45 ` [Qemu-devel] [PATCH 1/2] scsi-disk: Fix assertion failure on WRITE SAME Fam Zheng
2015-07-29 8:45 ` [Qemu-devel] [PATCH 2/2] virtio-scsi-test: Add test case for tail unaligned " Fam Zheng
2015-07-29 10:58 ` [Qemu-devel] [PATCH 0/2] scsi-disk: Fix an assertion failure Paolo Bonzini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.