43 lines
1.9 KiB
Diff
43 lines
1.9 KiB
Diff
From 9e4751b3a9c0435c4cb199c353144acb55458473 Mon Sep 17 00:00:00 2001
|
|
From: Sebastian Mitterle <smitterl@redhat.com>
|
|
Date: Sat, 29 Aug 2020 00:49:07 +0000
|
|
Subject: [PATCH 027/108] disk storage: fix allocation size for pool format dos
|
|
|
|
The changed condition was always false because the function was always
|
|
called with boundary values 0.
|
|
|
|
Use the free extent's start value to get its start offset from the
|
|
cylinder boundary and determine if the needed size for allocation
|
|
needs to be expanded too in case the offset doesn't fit within extra
|
|
bytes for alignment.
|
|
|
|
This fixes an issue where vol-create-from will call qemu-img convert
|
|
to create a destination volume of same capacity as the source volume
|
|
and qemu-img will error 'Cannot grow device files' due to the partition
|
|
being too small for the source although both destination partition and
|
|
source volume have the same capacity.
|
|
|
|
Signed-off-by: Sebastian Mitterle <smitterl@redhat.com>
|
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
(cherry picked from commit 653fdf48e352814efdbff72aa5421f65385088ac)
|
|
---
|
|
src/storage/storage_backend_disk.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backend_disk.c
|
|
index eae23ec24a..da06357b90 100644
|
|
--- a/src/storage/storage_backend_disk.c
|
|
+++ b/src/storage/storage_backend_disk.c
|
|
@@ -691,7 +691,7 @@ virStorageBackendDiskPartBoundaries(virStoragePoolObjPtr pool,
|
|
if (def->source.format == VIR_STORAGE_POOL_DISK_DOS) {
|
|
/* align to cylinder boundary */
|
|
neededSize += extraBytes;
|
|
- if ((*start % cylinderSize) > extraBytes) {
|
|
+ if ((dev->freeExtents[i].start % cylinderSize) > extraBytes) {
|
|
/* add an extra cylinder if the offset can't fit within
|
|
the extra bytes we have */
|
|
neededSize += cylinderSize;
|
|
--
|
|
2.33.0
|
|
|