On 04/28/2016 07:16 AM, Kevin Wolf wrote: > Signed-off-by: Kevin Wolf > --- > block/bochs.c | 51 +++++++++++++++++++++++++++++++++------------------ > 1 file changed, 33 insertions(+), 18 deletions(-) > > + uint64_t sector_num = offset >> BDRV_SECTOR_BITS; > + int nb_sectors = bytes >> BDRV_SECTOR_BITS; Since we're using the named constant here (instead of /512 or >>9),... > + uint64_t bytes_done = 0; > + QEMUIOVector local_qiov; > int ret; > > + assert((offset & (BDRV_SECTOR_SIZE - 1)) == 0); > + assert((bytes & (BDRV_SECTOR_SIZE - 1)) == 0); > + > + qemu_iovec_init(&local_qiov, qiov->niov); > + qemu_co_mutex_lock(&s->lock); > + > while (nb_sectors > 0) { > int64_t block_offset = seek_to_sector(bs, sector_num); > if (block_offset < 0) { > - return block_offset; > - } else if (block_offset > 0) { > - ret = bdrv_pread(bs->file->bs, block_offset, buf, 512); > + ret = block_offset; > + goto fail; > + } > + > + qemu_iovec_reset(&local_qiov); > + qemu_iovec_concat(&local_qiov, qiov, bytes_done, 512); should we also use the named constant BDRV_SECTOR_SIZE here instead of 512? I don't care strongly enough for a respin, though, particularly since it would affect line wrapping. Reviewed-by: Eric Blake > + > + if (block_offset > 0) { > + ret = bdrv_co_preadv(bs->file->bs, block_offset, 512, > + &local_qiov, 0); > if (ret < 0) { > - return ret; > + goto fail; > } > } else { > - memset(buf, 0, 512); > + qemu_iovec_memset(&local_qiov, 0, 0, 512); > } > nb_sectors--; > sector_num++; > - buf += 512; > + bytes_done += 512; More of the magic 512, if you care. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org