1 (* (C) Copyright 2007-2008 Richard W.M. Jones, Red Hat Inc.
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 (** {2 Device model} *)
25 class virtual device :
27 method virtual name : string
28 method virtual size : Int63.t
29 method read : Int63.t -> Int63.t -> string
30 method read_bitstring : Int63.t -> Int63.t -> Bitmatch.bitstring
31 method virtual blocksize : Int63.t
32 method virtual mapblock : Int63.t -> (device * Int63.t) list
35 class block_device : string -> Int63.t ->
39 method read : Int63.t -> Int63.t -> string
40 method read_bitstring : Int63.t -> Int63.t -> Bitmatch.bitstring
41 method blocksize : Int63.t
42 method mapblock : Int63.t -> (device * Int63.t) list
43 method close : unit -> unit
46 class offset_device : string -> Int63.t -> Int63.t -> Int63.t -> device ->
50 method read : Int63.t -> Int63.t -> string
51 method read_bitstring : Int63.t -> Int63.t -> Bitmatch.bitstring
52 method blocksize : Int63.t
53 method mapblock : Int63.t -> (device * Int63.t) list
56 class blocksize_overlay : Int63.t -> device ->
60 method read : Int63.t -> Int63.t -> string
61 method read_bitstring : Int63.t -> Int63.t -> Bitmatch.bitstring
62 method blocksize : Int63.t
63 method mapblock : Int63.t -> (device * Int63.t) list
66 val null_device : device
72 (lv * filesystem) list;
78 d_content : disk_content;
82 [ `Filesystem of filesystem
83 | `Partitions of partitions
84 | `PhysicalVolume of pv
89 parts_plugin_id : parts_plugin_id;
90 parts : partition list;
93 part_status : partition_status;
96 part_content : partition_content;
99 and partition_status = Bootable | Nonbootable | Malformed | NullEntry
100 and partition_content =
101 [ `Filesystem of filesystem
102 | `PhysicalVolume of pv
107 fs_plugin_id : fs_plugin_id;
109 fs_blocksize : Int63.t;
110 fs_blocks_total : Int63.t;
112 fs_blocks_reserved : Int63.t;
113 fs_blocks_avail : Int63.t;
114 fs_blocks_used : Int63.t;
115 fs_inodes_total : Int63.t;
116 fs_inodes_reserved : Int63.t;
117 fs_inodes_avail : Int63.t;
118 fs_inodes_used : Int63.t;
122 lvm_plugin_id : lvm_plugin_id;
129 and parts_plugin_id = string
130 and fs_plugin_id = string
131 and lvm_plugin_id = string
133 (** {2 Internal functions used by the plug-ins} *)
135 val canonical_uuid : string -> string
136 (** Convert a UUID which may contain '-' characters to canonical form. *)
138 val group_by : ?cmp:('a -> 'a -> int) -> ('a * 'b) list -> ('a * 'b list) list
139 (** Group a sorted list of pairs by the first element of the pair. *)
141 val range : int -> int -> int list
142 (** [range a b] returns the list of integers [a <= i < b].
143 If [a >= b] then the empty list is returned.