• M
    blockdev: Reject multiple definitions for the same drive · 4e5d9b57
    Markus Armbruster 提交于
    We silently ignore multiple definitions for the same drive:
    
        $ qemu-system-x86_64 -nodefaults -vnc :1 -S -monitor stdio -drive if=ide,index=1,file=tmp.qcow2 -drive if=ide,index=1,file=nonexistant
        QEMU 0.13.50 monitor - type 'help' for more information
        (qemu) info block
        ide0-hd1: type=hd removable=0 file=tmp.qcow2 backing_file=tmp.img ro=0 drv=qcow2 encrypted=0
    
    With if=none, this can become quite confusing:
    
        $ qemu-system-x86_64 -nodefaults -vnc :1 -S -monitor stdio -drive if=none,index=1,file=tmp.qcow2,id=eins -drive if=none,index=1,file=nonexistant,id=zwei -device ide-drive,drive=eins -device ide-drive,drive=zwei
        qemu-system-x86_64: -device ide-drive,drive=zwei: Property 'ide-drive.drive' can't find value 'zwei'
    
    The second -device fails, because it refers to drive zwei, which got
    silently ignored.
    
    Make multiple drive definitions fail cleanly.
    
    Unfortunately, there's code that relies on multiple drive definitions
    being silently ignored: main() merrily adds default drives even when
    the user already defined these drives.  Fix that up.
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    4e5d9b57
vl.c 87.6 KB