On (Mon) 06 Jun 2011 [11:38:03], Luiz Capitulino wrote:
> On Mon, 6 Jun 2011 17:10:32 +0530
> Amit Shah <[email protected]> wrote:
>
> > On (Fri) 03 Jun 2011 [16:03:57], Luiz Capitulino wrote:
> >
> > > +static int tray_open(const char *device, int remove, int force)
> > > +{
> > > + BlockDriverState *bs;
> > > +
> > > + bs = bdrv_removable_find(device);
> > > + if (!bs) {
> > > + return -1;
> > > + }
> > > +
> > > + if (bdrv_eject(bs, 1, force) < 0) {
> > > + /* FIXME: will report undefined error in QMP */
> > > + return -1;
> > > + }
> > > +
> > > + if (remove) {
> > > + bdrv_close(bs);
> > > + }
> > > +
> > > + return 0;
> > > +}
> >
> > What's the reason to tie the 'remove' with tray open?
>
> In my first try I had a command called 'blockdev-media-remove', but then
> I had the impression that I was going too far as the only reason a client
> would ever want to open the tray is to remove the media.
Not necessary -- CD/DVD writers eject and reload trays after erasing
media -- at least they used to.
> > Won't it be
> > simpler to have it separated out, perhaps a 'change' event instead of
> > 'insert' that can accept NULL which means just remove medium?
>
> You meant 'command' instead of 'event', right?
>
> I don't think a change command makes sense, because it's just a shortcut
> to open/remove/insert/close.
Yes, command, sorry.
And by 'change' I don't mean the current monitor change command --
that's a badly-named one.
By change I mean just that -- replace the media. And that should
succeed only if tray is open. And tray remains open after the change.
Amit