[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: RFC: QMP event notification for disk media eject
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] Re: RFC: QMP event notification for disk media eject |
Date: |
Tue, 11 Jan 2011 15:45:49 -0200 |
On Tue, 11 Jan 2011 14:28:23 +0100
Kevin Wolf <address@hidden> wrote:
> Am 11.01.2011 14:11, schrieb Luiz Capitulino:
> > 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
>
> Is there a reason why you use the device name instead of the drive
> name/blockdev ID here?
Good question, this is a copy & paste from Daniel initial request, so
he's the best person to answer that question.
> > - new file path (to allow distinguishing eject from change)
>
> How do you distinguish? Would this key be missing for ejects? An empty
> string? Something else?
Yes, I think it would be optional and thus only part of the change
command.
> > Example:
> >
> > { "event": "BLOCK_MEDIA_CHANGE", "data": { "qdev-id": "myid",
> > "new-path":
> > "/foo/bar/dir/distro.iso" },
> > ... }
> >
> > 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" },
> > ... }
>
> I think it's called drive name in most other places.
Ok, please note that we won't implement both events, we have to choose
one or the other.