• K
    block: Fix snapshot=on for protocol parsed from filename · b998875d
    Kevin Wolf 提交于
    Since commit 9fd3171a, BDRV_O_SNAPSHOT uses an option QDict to specify
    the originally requested image as the backing file of the newly created
    temporary snapshot. This means that the filename is stored in
    "file.filename", which is an option that is not parsed for protocol
    names. Therefore things like -drive file=nbd:localhost:10809 were
    broken because it looked for a local file with the literal name
    'nbd:localhost:10809'.
    
    This patch changes the way BDRV_O_SNAPSHOT works once again. We now open
    the originally requested image as normal, and then do a similar
    operation as for live snapshots to put the temporary snapshot on top.
    This way, both driver specific options and parsed filenames work.
    
    As a nice side effect, this results in code movement to factor
    bdrv_append_temp_snapshot() out. This is a good preparation for moving
    its call to drive_init() and friends eventually.
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    Reviewed-by: NMax Reitz <mreitz@redhat.com>
    b998875d
051 7.3 KB