static BlockDriverAIOCB *raw_aio_writev(BlockDriverState *bs, int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, BlockDriverCompletionFunc *cb, void *opaque) { return raw_aio_submit(bs, sector_num, qiov, nb_sectors, cb, opaque, QEMU_AIO_WRITE); }
static BlockDriverAIOCB *raw_aio_writev(BlockDriverState *bs, int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, BlockDriverCompletionFunc *cb, void *opaque) { if (__hook_bdrv_aio_write) { ///XXX: only do when s2e is running return __hook_bdrv_aio_write(bs, sector_num, qiov->iov->iov_base, nb_sectors, cb, opaque); } return raw_aio_submit(bs, sector_num, qiov, nb_sectors, cb, opaque, QEMU_AIO_WRITE); }
static BlockDriverAIOCB *raw_aio_readv(BlockDriverState *bs, int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, BlockDriverCompletionFunc *cb, void *opaque) { if (__hook_bdrv_aio_read) { int fallback; static BlockDriverAIOCB *ret; ret = __hook_bdrv_aio_read(bs, sector_num, qiov->iov->iov_base, nb_sectors, cb, opaque, &fallback, &raw_read); if (!fallback) { return ret; } } return raw_aio_submit(bs, sector_num, qiov, nb_sectors, cb, opaque, QEMU_AIO_READ); }