Skip to content
Snippets Groups Projects
  • Vladimir Sementsov-Ogievskiy's avatar
    1084159b
    qapi: deprecate drive-backup · 1084159b
    Vladimir Sementsov-Ogievskiy authored
    
    Modern way is using blockdev-add + blockdev-backup, which provides a
    lot more control on how target is opened.
    
    As example of drive-backup problems consider the following:
    
    User of drive-backup expects that target will be opened in the same
    cache and aio mode as source. Corresponding logic is in
    drive_backup_prepare(), where we take bs->open_flags of source.
    
    It works rather bad if source was added by blockdev-add. Assume source
    is qcow2 image. On blockdev-add we should specify aio and cache options
    for file child of qcow2 node. What happens next:
    
    drive_backup_prepare() looks at bs->open_flags of qcow2 source node.
    But there no BDRV_O_NOCAHE neither BDRV_O_NATIVE_AIO: BDRV_O_NOCAHE is
    places in bs->file->bs->open_flags, and BDRV_O_NATIVE_AIO is nowhere,
    as file-posix parse options and simply set s->use_linux_aio.
    
    The documentation is updated in a minimal way, so that drive-backup is
    noted only as a deprecated command, and blockdev-backup used in most of
    places.
    
    Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    1084159b
    History
    qapi: deprecate drive-backup
    Vladimir Sementsov-Ogievskiy authored
    
    Modern way is using blockdev-add + blockdev-backup, which provides a
    lot more control on how target is opened.
    
    As example of drive-backup problems consider the following:
    
    User of drive-backup expects that target will be opened in the same
    cache and aio mode as source. Corresponding logic is in
    drive_backup_prepare(), where we take bs->open_flags of source.
    
    It works rather bad if source was added by blockdev-add. Assume source
    is qcow2 image. On blockdev-add we should specify aio and cache options
    for file child of qcow2 node. What happens next:
    
    drive_backup_prepare() looks at bs->open_flags of qcow2 source node.
    But there no BDRV_O_NOCAHE neither BDRV_O_NATIVE_AIO: BDRV_O_NOCAHE is
    places in bs->file->bs->open_flags, and BDRV_O_NATIVE_AIO is nowhere,
    as file-posix parse options and simply set s->use_linux_aio.
    
    The documentation is updated in a minimal way, so that drive-backup is
    noted only as a deprecated command, and blockdev-backup used in most of
    places.
    
    Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>