On Feb 16, 2015, at 10:42 AM, Kevin Wolf wrote:

> Am 16.02.2015 um 16:31 hat Programmingkid geschrieben:
>> 
>> On Feb 16, 2015, at 5:08 AM, Kevin Wolf wrote:
>> 
>>> Am 14.02.2015 um 03:28 hat Peter Maydell geschrieben:
>>>> On 14 February 2015 at 01:43, Programmingkid <programmingk...@gmail.com> 
>>>> wrote:
>>>>> Added features:
>>>>> Menu items to switch floppy and CD image files.
>>>>> Menu items to eject floppy and CD image files.
>>>>> Menu item to use /dev/cdrom.
>>>>> Verifies with the user before quitting QEMU by displaying a dialog box.
>>>>> 
>>>>> Signed-off-by: John Arbuckle <programmingk...@gmail.com>
>>>> 
>>>> Stefan, Kevin -- could you review the bits of this patch
>>>> which determine whether the machine has a floppy/cdrom
>>>> drive and if so let the user insert/inject it, please?
>>>> (that's the emulatorHasDevice and ejectFloppy/changeFloppy
>>>> functions, mostly). I don't know the block layer APIs so
>>>> I can't really say if this patch is doing it in the best/
>>>> non-deprecated/etc way or not...
>>> 
>>> Well, it's trying to detect the floppy/cdrom device by comparing string
>>> with default IDs that can be overridden by the user, so no, that's
>>> probably far from the best way to do it. The code also doesn't consider
>>> that you could have more than one floppy or cdrom drive.
>>> 
>>> The correct way is probably to just display any removable block device,
>>> and ideally also to implement some notifiers to deal with hotplug.
>> 
>> Could you provide examples?
> 
> You already use qmp_query_block(), so you get all existing devices.
> Currently you filter for everything that has a name that starts with
> either 'floppy' or 'cdrom'. You could filter for info->removable == true
> instead.


> 
> Of course, you'd have to do this while building up the menu, so that the
> menu will contain dynamically generated entries for every device.
> 
> Hotplug is a bit trickier, I guess. If you can make sure that qemu
> doesn't crash if the device for a menu entry has gone away, that would
> probably be acceptable for the start.

So what you want me to do is loop thru each entry in the BlockInfoList 
(returned by qmp_query_block() ) and see if it is removable. Then just add a 
menu item for the device name. If I did that we would have menu items like 
"ide1-cd0" and "floppy0". The menu items would not have intuitive names that 
the user would be able to understand easily. Sorry but your idea is not user 
friendly. I did look at the type field of the BlockInfoList structure and it is 
only set to "unknown". Maybe a compromise would be the solution. We set the 
type field to the common name of the device. "ide1-cd0" would have a type field 
set to "cdrom". Then set the menu item to this type field's value. 






Reply via email to