All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.