On Fri, Sep 19, 2014 at 02:21:28PM +0100, Richard W.M. Jones wrote: > On Fri, Sep 19, 2014 at 03:39:10PM +0800, Hu Tao wrote: > > Function mbr_part_type returns one of "primary", "extended" and > > "logical". The type is used by parted when adding partitions. > > > > Signed-off-by: Hu Tao <[email protected]> > > --- > > resize/resize.ml | 12 +++++++++--- > > 1 file changed, 9 insertions(+), 3 deletions(-) > > > > diff --git a/resize/resize.ml b/resize/resize.ml > > index 2ffd26e..f57b2ff 100644 > > --- a/resize/resize.ml > > +++ b/resize/resize.ml > > @@ -50,6 +50,7 @@ type partition = { > > p_id : partition_id; (* Partition (MBR/GPT) ID. *) > > p_type : partition_content; (* Content type and content size. *) > > p_label : string option; (* Label/name. *) > > + p_part_num: int; (* partition number *) > > I don't think it's necessary to store p_part_num in the main > partitions struct. > > Instead you can get to the partition number using: > > p.p_part.G.part_num > > For example, mbr_part_type could be written: > > let mbr_part_type x = > if x.p_part.G.part_num <= 4 && x.p_type <> ContentExtendedPartition then > "primary" > [etc]
Yes, this works, too. > > > + let mbr_part_type x = > > + if x.p_part_num <= 4 && x.p_type <> ContentExtendedPartition then > > "primary" > > + else if x.p_part_num <= 4 && x.p_type = ContentExtendedPartition then > > "extended" > > + else "logical" in > > + > > (* Now partition the target disk. *) > > List.iter ( > > fun p -> > > - g#part_add "/dev/sdb" "primary" p.p_target_start p.p_target_end > > + g#part_add "/dev/sdb" (mbr_part_type p) p.p_target_start > > p.p_target_end > > ) partitions; > > The big problem with this is I think it doesn't work properly for GPT. > GPT has no idea what "extended" is -- such a concept does not exist. > So if you passed a GPT guest to virt-resize with >= 5 partitions in > it, then virt-resize will not work. The type becomes partition name if the partition table is GPT. So this patch is not a problem. However, I didn't test the series with GPT partitions, I'll test in v3. Regards, Hu > > I think you need to check the partition table type somewhere. > > Rich. > > -- > 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 _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
