- let partition_map =
- let lvs = get_lvs () in (* Logical volumes. *)
- eprintf "partition_map: LVs: %s\n%!"
- (String.concat "; " (List.map (fun (lvname, _, _) -> lvname));
-
- let all_partitions = List.map get_partitions all_block_devices in
- let all_partitions = List.concat all_partitions in
- eprintf "partition_map: all parts: %s\n%!"
- (String.concat "; " all_partitions);
-
- (* Ignore any partitions which are used as PVs in the first list. *)
- let all_partitions =
-
-in
-*)
+ let all_partitions : partition list =
+ (* LVs & PVs. *)
+ let lvs, pvs =
+ let lvs = get_lvs () in
+ let pvs = List.map (fun (_, pvs, _) -> pvs) lvs in
+ let pvs = List.concat pvs in
+ let pvs = sort_uniq pvs in
+ eprintf "all_partitions: PVs: %s\n%!" (String.concat "; " pvs);
+ let lvs = List.map (fun (lvname, _, _) -> lvname) lvs in
+ eprintf "all_partitions: LVs: %s\n%!"
+ (String.concat "; " (List.map dev_of_partition lvs));
+ lvs, pvs in
+
+ (* Partitions (eg. "sda1", "sda2"). *)
+ let parts =
+ let parts = List.map fst all_block_devices in
+ let parts = List.map get_partitions parts in
+ let parts = List.concat parts in
+ eprintf "all_partitions: all partitions: %s\n%!"
+ (String.concat "; " (List.map dev_of_partition parts));
+
+ (* Remove any partitions which are PVs. *)
+ let parts = List.filter (
+ function
+ | Part (dev, partnum) -> not (List.mem (dev ^ partnum) pvs)
+ | LV _ -> assert false
+ ) parts in
+ parts in
+ eprintf "all_partitions: partitions after removing PVs: %s\n%!"
+ (String.concat "; " (List.map dev_of_partition parts));