qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] RFC: QMP event notification for disk media eject


From: Luiz Capitulino
Subject: Re: [Qemu-devel] RFC: QMP event notification for disk media eject
Date: Tue, 11 Jan 2011 15:53:58 -0200

On Tue, 11 Jan 2011 15:13:40 +0100
Markus Armbruster <address@hidden> wrote:

> Luiz Capitulino <address@hidden> writes:
> 
> > Hi there,
> >
> > I need feedback on a new QMP event.
> >
> > Problem
> > =======
> >
> > There's no way for a management tool to detect that a guest OS has ejected 
> > the
> > media in a CDROM or Floppy disk drive (I'm discarding polling, because it's
> > undesirable at best).
> >
> > The end result is that the management tool can get confused, this is 
> > happening
> > with libvirt when migration is involved: if the guest is saved/restored or
> > migrated, then libvirt will start the guest again with media still present.
> >
> > NOTE: Most of the analysis here was done by Daniel Berrange.
> >
> > Solution
> > ========
> >
> > We need a new QMP event to solve that. There are two possible events, a
> > general one and a very specific one.
> >
> > There are 3 scenarios in which both events should be emitted:
> >
> >  1. When guest OS ejects media
> >  2. When 'eject' monitor command is run
> >  3. When 'change' monitor command is run
> >
> > BLOCK_MEDIA_CHANGE
> > ------------------
> >
> > This is the general event, it's emitted when any removable block device
> > is changed.
> >
> > Ideally, the event should contain two pieces of info:
> >
> >  - qdev device name
> >  - new file path (to allow distinguishing eject from change)
> >
> > Example:
> >
> >   { "event": "BLOCK_MEDIA_CHANGE", "data": { "qdev-id": "myid",
> >                                              "new-path": 
> > "/foo/bar/dir/distro.iso" },
> >                                              ... }
> 
> What if a host block device that isn't currently connected to a qdev
> goes through a media change?
> 
> What if the connected qdev doesn't have an ID?

We could add the blockdev id too.

> > BLOCK_MEDIA_EJECT
> > -----------------
> >
> > This event is only emitted when a CDROM or a floppy disk is ejected.
> >
> > The event contains one info one:
> >
> >  - device name
> >
> > Example:
> >
> >   { "event": "BLOCK_MEDIA_EJECT", "data": { "device-name": "ide1-cd0" }, 
> > ... }
> 
> What makes CD-ROM and floppy special?

Those are the only devices that support the eject operation (or have a tray
status? Sorry for my bad terminology) and are the ones that we have a concrete
use case to handle.

We might want to be more general, but it does have a complexity cost and
its possible user cases are theoretical IMHO.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]