• J
    block: Add bitmap successors · 9bd2b08f
    John Snow 提交于
    A bitmap successor is an anonymous BdrvDirtyBitmap that is intended to
    be created just prior to a sensitive operation (e.g. Incremental Backup)
    that can either succeed or fail, but during the course of which we still
    want a bitmap tracking writes.
    
    On creating a successor, we "freeze" the parent bitmap which prevents
    its deletion, enabling, anonymization, or creating a bitmap with the
    same name.
    
    On success, the parent bitmap can "abdicate" responsibility to the
    successor, which will inherit its name. The successor will have been
    tracking writes during the course of the backup operation. The parent
    will be safely deleted.
    
    On failure, we can "reclaim" the successor from the parent, unifying
    them such that the resulting bitmap describes all writes occurring since
    the last successful backup, for instance. Reclamation will thaw the
    parent, but not explicitly re-enable it.
    
    BdrvDirtyBitmap operations that target a single bitmap are protected
    by assertions that the bitmap is not frozen and/or disabled.
    
    BdrvDirtyBitmap operations that target a group of bitmaps, such as
    bdrv_{set,reset}_dirty will ignore frozen/disabled drives with a
    conditional instead.
    
    Internal functions that enable/disable dirty bitmaps have assertions
    added to them to prevent modifying frozen bitmaps.
    Signed-off-by: NJohn Snow <jsnow@redhat.com>
    Reviewed-by: NMax Reitz <mreitz@redhat.com>
    Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: NEric Blake <eblake@redhat.com>
    Message-id: 1429314609-29776-10-git-send-email-jsnow@redhat.com
    Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    9bd2b08f
block.h 24.9 KB