On Wed, Apr 27, 2016 at 11:52:37AM +0200, Kevin Wolf wrote: > -static int cloop_read(BlockDriverState *bs, int64_t sector_num, > - uint8_t *buf, int nb_sectors) > +static int coroutine_fn > +cloop_co_preadv(BlockDriverState *bs, uint64_t offset, uint64_t bytes, > + QEMUIOVector *qiov, int flags) > { > BDRVCloopState *s = bs->opaque; > + uint64_t sector_num = offset >> BDRV_SECTOR_BITS; > + int nb_sectors = bytes >> BDRV_SECTOR_BITS; > int i; > > + assert((offset & (BDRV_SECTOR_SIZE - 1)) == 0); > + assert((bytes & (BDRV_SECTOR_SIZE - 1)) == 0); > + > + qemu_co_mutex_lock(&s->lock); > + > for (i = 0; i < nb_sectors; i++) { > + void *data; > uint32_t sector_offset_in_block = > ((sector_num + i) % s->sectors_per_block), > block_num = (sector_num + i) / s->sectors_per_block; > if (cloop_read_block(bs, block_num) != 0) { > return -1;
s->lock must be unlocked.
signature.asc
Description: PGP signature