[Devel] [PATCH rh7] ploop: Fix huge grow of empty image
    Kirill Tkhai 
    ktkhai at virtuozzo.com
       
    Thu Jan 30 13:29:48 MSK 2020
    
    
  
The following scenario leads to problem:
$ploop init -s 2G root.hds
$ls -h root.hds
-rw------- 1 root root  15M янв 30 13:20 root.hds
Empty image. Grow BAT above current root.hds lenght
$ploop grow -s 3932257M DiskDescriptor.xml
(Requires 16M of BAT)
grow_end is not new actual BAT new size. In case of
image is empty (total size is less then new BAT size)
it points to end of current BAT.
We have to use grow_end + n_alloced, or, the same,
n_needed - 1
https://jira.sw.ru/browse/PSBM-101143
Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
 drivers/block/ploop/fmt_ploop1.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/block/ploop/fmt_ploop1.c b/drivers/block/ploop/fmt_ploop1.c
index 280767f59995..6745d29e5309 100644
--- a/drivers/block/ploop/fmt_ploop1.c
+++ b/drivers/block/ploop/fmt_ploop1.c
@@ -763,7 +763,7 @@ ploop1_prepare_grow(struct ploop_delta * delta, u64 *new_size, int *reloc)
 		/* Does not use rellocated data clusters during grow. */
 		if (delta->holes_bitmap) {
 			i = delta->io.plo->grow_start;
-			while (i <= delta->io.plo->grow_end)
+			while (i <= n_needed - 1)
 				ploop_clear_holes_bitmap_bit(i++, delta);
 		}
 	}
    
    
More information about the Devel
mailing list