Skip to content
Snippets Groups Projects
  • Hanna Reitz's avatar
    c69291e7
    qemu-img: Fix convert -n -B for backing-less targets · c69291e7
    Hanna Reitz authored
    
    s.target_has_backing does not reflect whether the target BDS has a
    backing file; it only tells whether we should use a backing file during
    conversion (specified by -B).
    
    As such, if you use convert -n, the target does not necessarily actually
    have a backing file, and then dereferencing out_bs->backing fails here.
    
    When converting to an existing file, we should set
    target_backing_sectors to a negative value, because first, as the
    comment explains, this value is only used for optimization, so it is
    always fine to do that.
    
    Second, we use this value to determine where the target must be
    initialized to zeroes (overlays are initialized to zero after the end of
    their backing file).  When converting to an existing file, we cannot
    assume that to be true.
    
    Cc: qemu-stable@nongnu.org
    Fixes: 351c8eff
           ("qemu-img: Special post-backing convert handling")
    Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
    Message-Id: <20200121155915.98232-2-mreitz@redhat.com>
    Reviewed-by: default avatarJohn Snow <jsnow@redhat.com>
    Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
    c69291e7
    History
    qemu-img: Fix convert -n -B for backing-less targets
    Hanna Reitz authored
    
    s.target_has_backing does not reflect whether the target BDS has a
    backing file; it only tells whether we should use a backing file during
    conversion (specified by -B).
    
    As such, if you use convert -n, the target does not necessarily actually
    have a backing file, and then dereferencing out_bs->backing fails here.
    
    When converting to an existing file, we should set
    target_backing_sectors to a negative value, because first, as the
    comment explains, this value is only used for optimization, so it is
    always fine to do that.
    
    Second, we use this value to determine where the target must be
    initialized to zeroes (overlays are initialized to zero after the end of
    their backing file).  When converting to an existing file, we cannot
    assume that to be true.
    
    Cc: qemu-stable@nongnu.org
    Fixes: 351c8eff
           ("qemu-img: Special post-backing convert handling")
    Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
    Message-Id: <20200121155915.98232-2-mreitz@redhat.com>
    Reviewed-by: default avatarJohn Snow <jsnow@redhat.com>
    Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>