storage: Don't unsparsify images when cloning
authorCole Robinson <crobinso@redhat.com>
Tue, 7 Feb 2012 19:46:30 +0000 (14:46 -0500)
committerCole Robinson <crobinso@redhat.com>
Tue, 7 Feb 2012 19:53:45 +0000 (14:53 -0500)
commit0ed86cfb514fea6d6c6182fec86a632ff0fa3062
tree282090d1efcf00395609bf8256a438c5969fd029
parent60f190735c29f0b753ddc08591662b037ba95728
storage: Don't unsparsify images when cloning

Input to the volume cloning code is a source volume and an XML
descriptor for the new volume. It is possible for the new volume
to have a greater size than source volume, at which point libvirt
will just stick 0s on the end of the new image (for raw format
anyways).

Unfortunately a logic error messed up our tracking of the of the
excess amount that needed to be written: end result is that sparse
clones were made very much non-sparse, and cloning regular disk
images could end up excessively sized (though data unaltered).

Drop the 'remain' variable entriely here since it's redundant, and
track actual allocation directly against the desired 'total'.
src/storage/storage_backend.c