summaryrefslogtreecommitdiffstats
path: root/virt-df/virt_df.mli
diff options
context:
space:
mode:
Diffstat (limited to 'virt-df/virt_df.mli')
-rw-r--r--virt-df/virt_df.mli237
1 files changed, 0 insertions, 237 deletions
diff --git a/virt-df/virt_df.mli b/virt-df/virt_df.mli
deleted file mode 100644
index f35e0db..0000000
--- a/virt-df/virt_df.mli
+++ /dev/null
@@ -1,237 +0,0 @@
-(** 'df' command for virtual domains. *)
-(* (C) Copyright 2007-2008 Richard W.M. Jones, Red Hat Inc.
- http://libvirt.org/
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *)
-
-(** This module (Virt_df) contains functions and values which are
- used throughout the plug-ins and main code.
-*)
-
-val ( +* ) : int32 -> int32 -> int32
-val ( -* ) : int32 -> int32 -> int32
-val ( ** ) : int32 -> int32 -> int32
-val ( /* ) : int32 -> int32 -> int32
-val ( +^ ) : int64 -> int64 -> int64
-val ( -^ ) : int64 -> int64 -> int64
-val ( *^ ) : int64 -> int64 -> int64
-val ( /^ ) : int64 -> int64 -> int64
-(** int32 and int64 infix operators for convenience. *)
-
-val debug : bool ref (** If true, emit debug info to stderr*)
-val uri : string option ref (** Hypervisor/libvirt URI. *)
-val inodes : bool ref (** Display inodes. *)
-val human : bool ref (** Display human-readable. *)
-val all : bool ref (** Show all or just active domains. *)
-val test_files : string list ref (** In test mode (-t) list of files. *)
-(** State of command line arguments. *)
-
-(**
- {2 Domain/device model}
-
- The "domain/device model" that we currently understand looks
- like this:
-
-{v
-domains
- |
- \--- host partitions / disk image files
- ||
- guest block devices
- |
- +--> guest partitions (eg. using MBR)
- | |
- \-(1)->+--- filesystems (eg. ext3)
- |
- \--- PVs for LVM
- |||
- VGs and LVs
-v}
-
- (1) Filesystems and PVs may also appear directly on guest
- block devices.
-
- Partition schemes (eg. MBR) and filesystems register themselves
- with this main module and they are queried first to get an idea
- of the physical devices, partitions and filesystems potentially
- available to the guest.
-
- Volume management schemes (eg. LVM2) register themselves here
- and are called later with "spare" physical devices and partitions
- to see if they contain LVM data. If this results in additional
- logical volumes then these are checked for filesystems.
-
- Swap space is considered to be a dumb filesystem for the purposes
- of this discussion.
-*)
-
-class virtual device :
- object
- method virtual name : string
- method virtual read : int64 -> int -> string
- method read_bitstring : int64 -> int -> string * int * int
- method virtual size : int64
- end
- (**
- A virtual (or physical!) device, encapsulating any translation
- that has to be done to access the device. eg. For partitions
- there is a simple offset, but for LVM you may need complicated
- table lookups.
-
- We keep the underlying file descriptors open for the duration
- of the program. There aren't likely to be many of them, and
- the program is short-lived, and it's easier than trying to
- track which device is using what fd. As a result, there is no
- need for any close/deallocation function.
-
- Note the very rare use of OOP in OCaml!
- *)
-
-class block_device : string ->
- object
- method name : string
- method read : int64 -> int -> string
- method read_bitstring : int64 -> int -> string * int * int
- method size : int64
- end
- (** A concrete device which just direct-maps a file or /dev device. *)
-
-class offset_device : string -> int64 -> int64 -> device ->
- object
- method name : string
- method read : int64 -> int -> string
- method read_bitstring : int64 -> int -> string * int * int
- method size : int64
- end
- (** A concrete device which maps a linear part of an underlying device.
-
- [new offset_device name start size dev] creates a new
- device which maps bytes from [start] to [start+size-1]
- of the underlying device [dev] (ie. in this device they
- appear as bytes [0] to [size-1]).
-
- Useful for things like partitions.
- *)
-
-val null_device : device
- (** The null device. Any attempt to read generates an error. *)
-
-type domain = {
- dom_name : string; (** Domain name. *)
- dom_id : int option; (** Domain ID (if running). *)
- dom_disks : disk list; (** Domain disks. *)
- dom_lv_filesystems :
- (lv * filesystem) list; (** Domain LV filesystems. *)
-}
-and disk = {
- d_type : string option; (** The <disk type=...> *)
- d_device : string; (** The <disk device=...> (eg "disk") *)
- d_source : string; (** The <source file=... or dev> *)
- d_target : string; (** The <target dev=...> (eg "hda") *)
- d_dev : device; (** Disk device. *)
- d_content : disk_content; (** What's on it. *)
-}
-and disk_content =
- [ `Filesystem of filesystem (** Contains a direct filesystem. *)
- | `Partitions of partitions (** Contains partitions. *)
- | `PhysicalVolume of pv (** Contains an LVM PV. *)
- | `Unknown (** Not probed or unknown. *)
- ]
-and partitions = {
- parts_name : string; (** Name of partitioning scheme. *)
- parts : partition list; (** Partitions. *)
-}
-and partition = {
- part_status : partition_status; (** Bootable, etc. *)
- part_type : int; (** Partition filesystem type. *)
- part_dev : device; (** Partition device. *)
- part_content : partition_content; (** What's on it. *)
-}
-and partition_status = Bootable | Nonbootable | Malformed | NullEntry
-and partition_content =
- [ `Filesystem of filesystem (** Filesystem. *)
- | `PhysicalVolume of pv (** Contains an LVM PV. *)
- | `Unknown (** Not probed or unknown. *)
- ]
-and filesystem = {
- fs_name : string; (** Name of filesystem. *)
- fs_block_size : int64; (** Block size (bytes). *)
- fs_blocks_total : int64; (** Total blocks. *)
- fs_is_swap : bool; (** If swap, following not valid. *)
- fs_blocks_reserved : int64; (** Blocks reserved for super-user. *)
- fs_blocks_avail : int64; (** Blocks free (available). *)
- fs_blocks_used : int64; (** Blocks in use. *)
- fs_inodes_total : int64; (** Total inodes. *)
- fs_inodes_reserved : int64; (** Inodes reserved for super-user. *)
- fs_inodes_avail : int64; (** Inodes free (available). *)
- fs_inodes_used : int64; (** Inodes in use. *)
-}
-and pv = {
- lvm_plugin_id : lvm_plugin_id; (** The LVM plug-in which detected
- this. *)
- pv_uuid : string; (** UUID. *)
-}
-and lv = {
- lv_dev : device; (** Logical volume device. *)
-}
-
-and lvm_plugin_id
-
-val string_of_partition : partition -> string
-val string_of_filesystem : filesystem -> string
-(** Convert a partition or filesystem struct to a string (for debugging). *)
-
-val canonical_uuid : string -> string
-(** Convert a UUID which may contain '-' characters to canonical form. *)
-
-(** {2 Plug-in registration functions} *)
-
-val partition_type_register : string -> (device -> partitions) -> unit
-(** Register a partition probing plug-in. *)
-
-val probe_for_partitions : device -> partitions option
-(** Do a partition probe on a device. Returns [Some partitions] or [None]. *)
-
-val filesystem_type_register : string -> (device -> filesystem) -> unit
-(** Register a filesystem probing plug-in. *)
-
-val probe_for_filesystem : device -> filesystem option
-(** Do a filesystem probe on a device. Returns [Some filesystem] or [None]. *)
-
-val lvm_type_register :
- string -> (lvm_plugin_id -> device -> pv) -> (device list -> lv list) -> unit
-(** [lvm_type_register lvm_name probe_fn list_lvs_fn]
- registers a new LVM type. [probe_fn] is a function which
- should probe a device to find out if it contains a PV.
- [list_lvs_fn] is a function which should take a list of
- devices (PVs) and construct a list of LV devices.
-*)
-
-val probe_for_pv : device -> pv option
-(** Do a PV probe on a device. Returns [Some pv] or [None]. *)
-
-val list_lvs : lvm_plugin_id -> device list -> lv list
-(** Construct LV devices from a list of PVs. *)
-
-(** {2 Utility functions} *)
-
-val group_by : ?cmp:('a -> 'a -> int) -> ('a * 'b) list -> ('a * 'b list) list
-(** Group a sorted list of pairs by the first element of the pair. *)
-
-val range : int -> int -> int list
-(** [range a b] returns the list of integers [a <= i < b].
- If [a >= b] then the empty list is returned.
-*)