Skip to content
  • Eric Blake's avatar
    5fcbeb06
    nbd: Allow bitmap export during QMP nbd-server-add · 5fcbeb06
    Eric Blake authored
    With the experimental x-nbd-server-add-bitmap command, there was
    a window of time where an NBD client could see the export but not
    the associated dirty bitmap, which can cause a client that planned
    on using the dirty bitmap to be forced to treat the entire image
    as dirty as a safety fallback.  Furthermore, if the QMP client
    successfully exports a disk but then fails to add the bitmap, it
    has to take on the burden of removing the export.  Since we don't
    allow changing the exposed dirty bitmap (whether to a different
    bitmap, or removing advertisement of the bitmap), it is nicer to
    make the bitmap tied to the export at the time the export is
    created, with automatic failure to export if the bitmap is not
    available.
    
    The experimental command included an optional 'bitmap-export-name'
    field for remapping the name exposed over NBD to be different from
    the bitmap name stored on disk.  However, my libvirt demo code
    for implementing differential backups on top of persistent bitmaps
    did not need to take advantage of that feature (it is instead
    possible to create a new temporary bitmap with the desired name,
    use block-dirty-bitmap-merge to merge one or more persistent
    bitmaps into the temporary, then associate the temporary with the
    NBD export, if control is needed over the exported bitmap name).
    Hence, I'm not copying that part of the experiment over to the
    stable addition. For more details on the libvirt demo, see
    https://www.redhat.com/archives/libvir-list/2018-October/msg01254.html,
    https://kvmforum2018.sched.com/event/FzuB/facilitating-incremental-backup-eric-blake-red-hat
    
    
    
    This patch focuses on the user interface, and reduces (but does
    not completely eliminate) the window where an NBD client can see
    the export but not the dirty bitmap, with less work to clean up
    after errors.  Later patches will add further cleanups now that
    this interface is declared stable via a single QMP command,
    including removing the race window.
    
    Update test 223 to use the new interface.
    
    Signed-off-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-Id: <20190111194720.15671-6-eblake@redhat.com>
    5fcbeb06
    nbd: Allow bitmap export during QMP nbd-server-add
    Eric Blake authored
    With the experimental x-nbd-server-add-bitmap command, there was
    a window of time where an NBD client could see the export but not
    the associated dirty bitmap, which can cause a client that planned
    on using the dirty bitmap to be forced to treat the entire image
    as dirty as a safety fallback.  Furthermore, if the QMP client
    successfully exports a disk but then fails to add the bitmap, it
    has to take on the burden of removing the export.  Since we don't
    allow changing the exposed dirty bitmap (whether to a different
    bitmap, or removing advertisement of the bitmap), it is nicer to
    make the bitmap tied to the export at the time the export is
    created, with automatic failure to export if the bitmap is not
    available.
    
    The experimental command included an optional 'bitmap-export-name'
    field for remapping the name exposed over NBD to be different from
    the bitmap name stored on disk.  However, my libvirt demo code
    for implementing differential backups on top of persistent bitmaps
    did not need to take advantage of that feature (it is instead
    possible to create a new temporary bitmap with the desired name,
    use block-dirty-bitmap-merge to merge one or more persistent
    bitmaps into the temporary, then associate the temporary with the
    NBD export, if control is needed over the exported bitmap name).
    Hence, I'm not copying that part of the experiment over to the
    stable addition. For more details on the libvirt demo, see
    https://www.redhat.com/archives/libvir-list/2018-October/msg01254.html,
    https://kvmforum2018.sched.com/event/FzuB/facilitating-incremental-backup-eric-blake-red-hat
    
    
    
    This patch focuses on the user interface, and reduces (but does
    not completely eliminate) the window where an NBD client can see
    the export but not the dirty bitmap, with less work to clean up
    after errors.  Later patches will add further cleanups now that
    this interface is declared stable via a single QMP command,
    including removing the race window.
    
    Update test 223 to use the new interface.
    
    Signed-off-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-Id: <20190111194720.15671-6-eblake@redhat.com>
Loading