[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH] block: Change bdrv_eject() not to drop the imag
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] Re: [PATCH] block: Change bdrv_eject() not to drop the image |
Date: |
Wed, 28 Jul 2010 12:52:55 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100720 Fedora/3.0.6-1.fc12 Thunderbird/3.0.6 |
Am 27.07.2010 14:02, schrieb Markus Armbruster:
> bdrv_eject() gets called when a device model opens or closes the tray.
>
> If the block driver implements method bdrv_eject(), that method gets
> called. Drivers host_cdrom implements it, and it opens and closes the
> physical tray, and nothing else. When a device model opens, then
> closes the tray, media changes only if the user actively changes the
> physical media while the tray is open. This is matches how physical
> hardware behaves.
>
> If the block driver doesn't implement method bdrv_eject(), we do
> something quite different: opening the tray severs the connection to
> the image by calling bdrv_close(), and closing the tray does nothing.
> When the device model opens, then closes the tray, media is gone,
> unless the user actively inserts another one while the tray is open,
> with a suitable change command in the monitor. This isn't how
> physical hardware behaves. Rather inconvenient when programs
> "helpfully" eject media to give you a chance to change it. The way
> bdrv_eject() behaves here turns that chance into a must, which is not
> what these programs or their users expect.
>
> Change the default action not to call bdrv_close(). Instead, note the
> tray status in new BlockDriverState member tray_open. Use it in
> bdrv_is_inserted().
>
> Arguably, the device models should keep track of tray status
> themselves. But this is less invasive.
>
> Signed-off-by: Markus Armbruster <address@hidden>
Thanks, applied to the block branch.
Kevin