[libvirt] API Proposal: Block device streaming (V3)

Stefan Hajnoczi stefanha at linux.vnet.ibm.com
Fri May 20 14:16:17 UTC 2011


On Fri, May 20, 2011 at 07:42:26AM -0500, Adam Litke wrote:
> > In the VIR_DOMAIN_BLOCK_STREAM_CONTINUOUS case, I think it is desirable
> > to have an async event emitted when the streaming is completed, so we
> > don't force apps to poll on the GetBlockStreamInfo if they only care
> > about completion. The event would also allow apps to determine if the
> > background stream job failed, which isn't something that's exposed in
> > any of these APis.
> > 
> > eg, in virDomainEventID enum, add
> > 
> >    VIR_DOMAIN_EVENT_ID_BLOCK_STREAM = 7,
> > 
> >    typedef enum {
> >       VIR_DOMAIN_BLOCK_STREAM_COMPLETED,
> >       VIR_DOMAIN_BLOCK_STREAM_FAILED,
> >    } virConnectDomainEventlockStreamStatus;
> > 
> >   typedef void (*virConnectDomainEventBlockStreamCallback(virConnectPtr conn,
> >                                                           virDomainPtr dom,
> >                                                           const char *path,
> >                                                           int status);
> > 
> > Internally this would have to be wired upto an event QEMU emits. If
> > completion automatically removes the backing store from the block device,
> > then we need the async event from QEMU regardless, since we'll need to
> > perform SELinux relabelling to deny the VM future access to the now
> > unused backing store.
> 
> This seems like a good idea to me.  Stefan and Anthony:  What do you
> guys think about adding these events to Qemu?  Is this something we
> could easily incorporate into the Qemu API?

We already raise events for error conditions like ENOSPC.  I think it
makes sense to signal asynchronous command completion using an event.
Although my knowledge of QMP is limited this sounds like a good idea.

Stefan




More information about the libvir-list mailing list