[Libguestfs] [PATCH v2 04/13] resize: introduce filter_part
Richard W.M. Jones
rjones at redhat.com
Fri Sep 19 13:34:25 UTC 2014
On Fri, Sep 19, 2014 at 03:39:06PM +0800, Hu Tao wrote:
> Signed-off-by: Hu Tao <hutao at cn.fujitsu.com>
> ---
> resize/resize.ml | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/resize/resize.ml b/resize/resize.ml
> index e69e486..660ac86 100644
> --- a/resize/resize.ml
> +++ b/resize/resize.ml
> @@ -453,14 +453,19 @@ read the man page virt-resize(1).
> error (f_"the source disk has no partitions");
>
> (* Filter out logical partitions. See note above. *)
> - let parts =
> + let filter_part part_type parts =
> match parttype with
> | GPT -> parts
> | MBR ->
> - List.filter (function
> - | { G.part_num = part_num } when part_num >= 5_l -> false
> - | _ -> true
> - ) parts in
> + match part_type with
> + | PrimaryPartition ->
> + List.filter (function
> + | { G.part_num = part_num } when part_num >= 5_l -> false
> + | _ -> true
> + ) parts
> + in
> +
> + let parts = filter_part PrimaryPartition parts in
>
> let partitions =
> List.map (
> --
> 1.9.3
The code isn't particularly natural for OCaml. There's a built-in
List.filter function which basically does this already, and it's
relatively easy to use too:
let parts =
List.filter (fun p -> parttype <> MBR || p.G.part_num <= 4_l) parts in
(You can completely remove the filter_part function).
To filter only logical partitions (in patch 12), you will need to do:
let parts =
List.filter (fun p -> parttype = MBR && p.G.part_num >= 5_l) parts in
(BTW I don't think that patch 12 would work correctly for GPT)
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org
More information about the Libguestfs
mailing list