Skip to content
Snippets Groups Projects
  • Hanna Reitz's avatar
    32a9a245
    block/snapshot: Clarify goto fallback behavior · 32a9a245
    Hanna Reitz authored
    
    In the bdrv_snapshot_goto() fallback code, we work with a pointer to
    either bs->file or bs->backing.  We detach that child, close the node
    (with .bdrv_close()), apply the snapshot on the child node, and then
    re-open the node (with .bdrv_open()).
    
    In order for .bdrv_open() to attach the same child node that we had
    before, we pass "file={child-node}" or "backing={child-node}" to it.
    Therefore, when .bdrv_open() has returned success, we can assume that
    bs->file or bs->backing (respectively) points to our original child
    again.  This is verified by an assertion.
    
    All of this is not immediately clear from a quick glance at the code,
    so add a comment to the assertion what it is for, and why it is valid.
    It certainly confused Coverity.
    
    Reported-by: Coverity (CID 1452774)
    Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
    Message-Id: <20210503095418.31521-1-mreitz@redhat.com>
    [mreitz: s/close/detach/]
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    32a9a245
    History
    block/snapshot: Clarify goto fallback behavior
    Hanna Reitz authored
    
    In the bdrv_snapshot_goto() fallback code, we work with a pointer to
    either bs->file or bs->backing.  We detach that child, close the node
    (with .bdrv_close()), apply the snapshot on the child node, and then
    re-open the node (with .bdrv_open()).
    
    In order for .bdrv_open() to attach the same child node that we had
    before, we pass "file={child-node}" or "backing={child-node}" to it.
    Therefore, when .bdrv_open() has returned success, we can assume that
    bs->file or bs->backing (respectively) points to our original child
    again.  This is verified by an assertion.
    
    All of this is not immediately clear from a quick glance at the code,
    so add a comment to the assertion what it is for, and why it is valid.
    It certainly confused Coverity.
    
    Reported-by: Coverity (CID 1452774)
    Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
    Message-Id: <20210503095418.31521-1-mreitz@redhat.com>
    [mreitz: s/close/detach/]
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>