• M
    vl: Fix -drive / -blockdev persistent reservation management · 8e29c657
    Markus Armbruster 提交于
    qemu-system-FOO's main() acts on command line arguments in its own
    idiosyncratic order.  There's not much method to its madness.
    Whenever we find a case where one kind of command line argument needs
    to refer to something created for another kind later, we rejigger the
    order.
    
    Recent commit cda4aa9a "vl: Create block backends before setting
    machine properties" was such a rejigger.  Block backends are now
    created before "delayed" objects.  This broke persistent reservation
    management.  Reproducer:
    
        $ qemu-system-x86_64 -object pr-manager-helper,id=pr-helper0,path=/tmp/pr-helper0.sock-drive -drive file=/dev/mapper/crypt,file.pr-manager=pr-helper0,format=raw,if=none,id=drive-scsi0-0-0-2
        qemu-system-x86_64: -drive file=/dev/mapper/crypt,file.pr-manager=pr-helper0,format=raw,if=none,id=drive-scsi0-0-0-2: No persistent reservation manager with id 'pr-helper0'
    
    The delayed pr-manager-helper object is created too late for use by
    -drive or -blockdev.  Normal objects are still created in time.
    
    pr-manager-helper has always been a delayed object (commit 7c9e5276
    "scsi, file-posix: add support for persistent reservation
    management").  Turns out there's no real reason for that.  Make it a
    normal object.
    
    Fixes: cda4aa9aSigned-off-by: NMarkus Armbruster <armbru@redhat.com>
    Message-Id: <20190604151251.9903-2-armbru@redhat.com>
    Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    (cherry picked from commit 9ea18ed2)
    Signed-off-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
    8e29c657
vl.c 135.7 KB