On Sun, Dec 16, 2012 at 06:08:53PM +0200, Michael S. Tsirkin wrote: > On Mon, Dec 10, 2012 at 02:09:45PM +0100, Stefan Hajnoczi wrote: > > @@ -33,6 +34,7 @@ typedef struct VirtIOBlock > > VirtIOBlkConf *blk; > > unsigned short sector_mask; > > DeviceState *qdev; > > + VirtIOBlockDataPlane *dataplane; > > } VirtIOBlock; > > > > static VirtIOBlock *to_virtio_blk(VirtIODevice *vdev) > > @@ -407,6 +409,14 @@ static void virtio_blk_handle_output(VirtIODevice > > *vdev, VirtQueue *vq) > > .num_writes = 0, > > }; > > > > + /* Some guests kick before setting VIRTIO_CONFIG_S_DRIVER_OK so start > > + * dataplane here instead of waiting for .set_status(). > > + */ > > By the way which guests are these?
I ran a Windows 8 guest today with build 48 virtio-win drivers. It notifies before the device gets its .set_status() callback invoked. But I could swear I've seen Linux guests do this too. > > + if (s->dataplane) { > > + virtio_blk_data_plane_start(s->dataplane); > > + return; > > + } > > + > > By the way it's chunk such as this that I meant: it's not > compiled out even if dataplane is disabled by configure. > Naither is the extra field in the struct. Okay. Stefan