CreateXMLFrom changes accidentally caused all raw volume creation to be
fully allocated (as though allocation == capacity). Fix this.
Also force CreateXMLFrom to maintain the previous behavior: sparseness
should still be maintained since we search for holes when copying, and the
clone behavior hasn't been tested with anything but the broken behavior.
+Mon Jun 22 12:31:38 EDT 2009 Cole Robinson <crobinso@redhat.com>
+
+ * src/storage_backend_fs.c src/storage_driver.c:
+ Fix raw storage volume creation for allocation < capacity.
+
+CreateXMLFrom changes accidentally caused all raw volume creation to be
+fully allocated (as though allocation == capacity). Fix this.
+
+Also force CreateXMLFrom to maintain the previous behavior: sparseness
+should still be maintained since we search for holes when copying, and the
+clone behavior hasn't been tested with anything but the broken behavior.
+
Mon Jun 22 11:09:18 EDT 2009 Cole Robinson <crobinso@redhat.com>
* src/test.c: Fix domain ID after redefining a running VM
goto cleanup;
}
- remain = vol->capacity;
+ remain = vol->allocation;
if (inputfd != -1) {
int amtread = -1;
if (newvol->capacity < origvol->capacity)
newvol->capacity = origvol->capacity;
+ /* Make sure allocation is at least as large as the destination cap,
+ * to make absolutely sure we copy all possible contents */
+ if (newvol->allocation < origvol->capacity)
+ newvol->allocation = origvol->capacity;
+
if (!backend->buildVolFrom) {
virStorageReportError(obj->conn, VIR_ERR_NO_SUPPORT,
"%s", _("storage pool does not support volume creation from an existing volume"));