scsi-disk: fix reads from scsi-disk devices
authorMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Fri, 3 Jun 2016 05:17:01 +0000 (06:17 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 6 Jun 2016 12:23:41 +0000 (13:23 +0100)
Commit fcaafb1001b9c42817714dd3b2aadcfdb997b53d accidentally broke reads from
scsi-disk devices when being updated from its original form to use the new
byte-based block functions. Add the extra missing sector to offset conversion
in order to restore read functionality.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Eric Blake <eblake@redhat.com>
Tested-by: xiaoqiang zhao <zxq_yx_007@163.com>
Message-id: 1464931021-25117-1-git-send-email-mark.cave-ayland@ilande.co.uk
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/scsi/scsi-disk.c

index ace65e0..ab7cf9c 100644 (file)
@@ -347,7 +347,7 @@ static void scsi_do_read(SCSIDiskReq *r, int ret)
         scsi_init_iovec(r, SCSI_DMA_BUF_SIZE);
         block_acct_start(blk_get_stats(s->qdev.conf.blk), &r->acct,
                          r->qiov.size, BLOCK_ACCT_READ);
-        r->req.aiocb = sdc->dma_readv(r->sector, &r->qiov,
+        r->req.aiocb = sdc->dma_readv(r->sector << BDRV_SECTOR_BITS, &r->qiov,
                                       scsi_read_complete, r, r);
     }