On Wed, May 07, 2014 at 04:14:31PM +0200, Peter Lieven wrote: > On 07.05.2014 12:27, Stefan Hajnoczi wrote: > >Drop the assumption that we're using the main AioContext for Linux > >AIO. Convert qemu_aio_set_fd_handler() to aio_set_fd_handler() and > >timer_new_ms() to aio_timer_new(). > > > >The .bdrv_detach/attach_aio_context() interfaces also need to be > >implemented to move the fd and timer from the old to the new AioContext. > > > >Cc: Peter Lieven <p...@kamp.de> > >Cc: Ronnie Sahlberg <ronniesahlb...@gmail.com> > >Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > >--- > > block/iscsi.c | 79 > > +++++++++++++++++++++++++++++++++++++++++------------------ > > 1 file changed, 55 insertions(+), 24 deletions(-) > > > >diff --git a/block/iscsi.c b/block/iscsi.c > >index a30202b..81e3ebd 100644 > >--- a/block/iscsi.c > >+++ b/block/iscsi.c > >@@ -47,6 +47,7 @@ > > typedef struct IscsiLun { > > struct iscsi_context *iscsi; > >+ AioContext *aio_context; > > int lun; > > enum scsi_inquiry_peripheral_device_type type; > > int block_size; > >@@ -69,6 +70,7 @@ typedef struct IscsiTask { > > struct scsi_task *task; > > Coroutine *co; > > QEMUBH *bh; > >+ AioContext *aio_context; > > If you need to respin I would copy the pointer to the whole IscsiLun struct > just > in case we need access to any other member in the future.
Fixed in v3. Also using IscsiLun->aio_context where possible instead of calling bdrv_get_aio_context(bs) so the field is used consistently. Stefan