Am 10.05.2016 um 14:56 hat Eric Blake geschrieben: > On 05/10/2016 02:55 AM, Kevin Wolf wrote: > > Am 06.05.2016 um 18:26 hat Eric Blake geschrieben: > >> Sector-based blk_aio_readv() and blk_aio_writev() should die; switch > >> to byte-based blk_aio_preadv() and blk_aio_pwritev() instead. > >> > >> As part of the cleanup, scsi_init_iovec() no longer needs to return > >> a value, and reword a comment. > >> > >> Signed-off-by: Eric Blake <ebl...@redhat.com> > >> > > >> @@ -118,7 +118,6 @@ static uint32_t scsi_init_iovec(SCSIDiskReq *r, size_t > >> size) > >> } > >> r->iov.iov_len = MIN(r->sector_count * 512, r->buflen); > >> qemu_iovec_init_external(&r->qiov, &r->iov, 1); > >> - return r->qiov.size / 512; > > > > The return value was MIN(r->sector_count, SCSI_DMA_BUF_SIZE / 512). > > > >> } > >> > >> static void scsi_disk_save_request(QEMUFile *f, SCSIRequest *req) > > >> - n = scsi_init_iovec(r, SCSI_DMA_BUF_SIZE); > >> + scsi_init_iovec(r, SCSI_DMA_BUF_SIZE); > >> block_acct_start(blk_get_stats(s->qdev.conf.blk), &r->acct, > >> - n * BDRV_SECTOR_SIZE, BLOCK_ACCT_READ); > >> - r->req.aiocb = blk_aio_readv(s->qdev.conf.blk, r->sector, > >> &r->qiov, n, > >> - scsi_read_complete, r); > >> + SCSI_DMA_BUF_SIZE, BLOCK_ACCT_READ); > > > > But here you use SCSI_DMA_BUF_SIZE without considering r->sector_count. > > Is this correct or are requests that are smaller than SCSI_DMA_BUF_SIZE > > now accounted for more data than they actually read? > > > > Would r->qiov.size be more obviously correct? You did that for writes. > > Yes. Is that something you are able to fix on commit, or should I submit > a fixup?
Okay, I can fix it up while applying. Kevin
pgpepWPO0LrxT.pgp
Description: PGP signature