Anthony Liguori <anth...@codemonkey.ws> writes: > On 01/11/2011 07:11 AM, Luiz Capitulino wrote: >> 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" }, >> ... } >> > > I think this is short sighted as block devices are not simply > expressed in terms of new-path. You would need to do something like: > > { 'blockdev': {'file': '/foo/bar/dir/distro.iso', 'cache', 'off', ...}} > > And that adds a lot of complexity that I'm not sure is really > justified. Tray status is really what you're interested in.
I figure the important bit is the notification that tray status changed. If management software wants to know more, it can query when it gets the event. > The user > cannot directly change the media, only the management tools can so why > would the management tools need to be notified about something that > they did?