----- Original Message ----- > On 05/07/2017 00:03, Marc-André Lureau wrote: > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > > --- > > include/block/block_int.h | 10 +++++----- > > 1 file changed, 5 insertions(+), 5 deletions(-) > > > > diff --git a/include/block/block_int.h b/include/block/block_int.h > > index 15fa602150..93eb2a9528 100644 > > --- a/include/block/block_int.h > > +++ b/include/block/block_int.h > > @@ -133,15 +133,15 @@ struct BlockDriver { > > void (*bdrv_refresh_filename)(BlockDriverState *bs, QDict *options); > > > > /* aio */ > > - BlockAIOCB *(*bdrv_aio_readv)(BlockDriverState *bs, > > + BlockAIOCB * coroutine_fn (*bdrv_aio_readv)(BlockDriverState *bs, > > int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, > > BlockCompletionFunc *cb, void *opaque); > > - BlockAIOCB *(*bdrv_aio_writev)(BlockDriverState *bs, > > + BlockAIOCB * coroutine_fn (*bdrv_aio_writev)(BlockDriverState *bs, > > int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, > > BlockCompletionFunc *cb, void *opaque); > > - BlockAIOCB *(*bdrv_aio_flush)(BlockDriverState *bs, > > + BlockAIOCB * coroutine_fn (*bdrv_aio_flush)(BlockDriverState *bs, > > BlockCompletionFunc *cb, void *opaque); > > - BlockAIOCB *(*bdrv_aio_pdiscard)(BlockDriverState *bs, > > + BlockAIOCB * coroutine_fn (*bdrv_aio_pdiscard)(BlockDriverState *bs, > > int64_t offset, int bytes, > > BlockCompletionFunc *cb, void *opaque); > > > > @@ -247,7 +247,7 @@ struct BlockDriver { > > void (*bdrv_lock_medium)(BlockDriverState *bs, bool locked); > > > > /* to control generic scsi devices */ > > - BlockAIOCB *(*bdrv_aio_ioctl)(BlockDriverState *bs, > > + BlockAIOCB * coroutine_fn (*bdrv_aio_ioctl)(BlockDriverState *bs, > > unsigned long int req, void *buf, > > BlockCompletionFunc *cb, void *opaque); > > int coroutine_fn (*bdrv_co_ioctl)(BlockDriverState *bs, > > > > > They are, but it's an implementation detail. Why is this patch necessary?
I didn't think this would be controversial :) well, the checks I added to clang verify function pointer share the coroutine attribute. The function themself are/need to be coroutine_fn (as they will call coroutine_fn too)