On Wed, May 20, 2015 at 06:51:30AM -0400, Chen Hanxiao wrote:
Add support for logical partitions.
- count number of logical_partition (we've split partitions list)
- don't count size of extended partition
For it'll duplicate with logical partition, we'll count it later
- we need at leat 1 gap between logical partitions.
so --aligment=1 will be increased by 1
Signed-off-by: Chen Hanxiao <chenhanxiao(a)cn.fujitsu.com>
---
resize/resize.ml | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/resize/resize.ml b/resize/resize.ml
index 92f7304..a0ed713 100644
--- a/resize/resize.ml
+++ b/resize/resize.ml
@@ -741,8 +741,10 @@ read the man page virt-resize(1).
(* We need some overhead for partitioning. *)
let overhead =
let maxl64 = List.fold_left max 0L in
+ (* We need at least 1 sector gap between logical partitions *)
+ let alignment = if alignment = 1L then 2L else alignment in
- let nr_partitions = List.length partitions in
+ let nr_partitions = List.length partitions + List.length logical_partitions in
I don't understand this at all. Why do logical partitions count
towards the surplus? I don't think they do.
Rich.
let gpt_start_sects = 64L in
let gpt_end_sects = gpt_start_sects in
@@ -770,12 +772,23 @@ read the man page virt-resize(1).
let required = List.fold_left (
fun total p ->
let newsize =
+ (* size of extended partition is calculated seperately *)
+ if p.p_type = ContentExtendedPartition then 0L else
+ match p.p_operation with
+ | OpCopy | OpIgnore -> p.p_part.G.part_size
+ | OpDelete -> 0L
+ | OpResize newsize -> newsize in
+ total +^ newsize
+ ) 0L partitions in
+ let required = required +^ List.fold_left (
+ fun total p ->
+ let newsize =
match p.p_operation with
| OpCopy | OpIgnore -> p.p_part.G.part_size
| OpDelete -> 0L
| OpResize newsize -> newsize in
total +^ newsize
- ) 0L partitions in
+ ) 0L logical_partitions in
let surplus = outsize -^ (required +^ overhead) in
--
2.1.0
_______________________________________________
Libguestfs mailing list
Libguestfs(a)redhat.com
https://www.redhat.com/mailman/listinfo/libguestfs
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW