X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=lib%2Fdiskimage.mli;h=5d2a420561898fba39205ad79936e865ffdd842b;hb=f5a7417793b3f0780b0dd49798ea27981f046d98;hp=0689a6913fd7c4525f71ebf0ff9c47ae015b05d4;hpb=de49d4605c37574f38b55b400db310f368640c94;p=virt-df.git diff --git a/lib/diskimage.mli b/lib/diskimage.mli index 0689a69..5d2a420 100644 --- a/lib/diskimage.mli +++ b/lib/diskimage.mli @@ -296,11 +296,43 @@ val scan_machine : machine -> machine (** {3 Create ownership tables} *) -val create_ownership : machine -> (*ownership*)unit +type ownership + +val create_ownership : machine -> ownership (** This creates the ownership tables (mapping disk blocks to the - ultimate filesystem, etc., which owns each). + ultimate filesystem, etc., which owns each one). *) +type owner = + [ `Filesystem of filesystem + | `Partitions of partitions + | `PhysicalVolume of pv ] + +val get_owners_lookup : machine -> ownership -> block_device -> + (Int63.t -> (owner * Int63.t) list) + (** [get_owners_lookup machine disk] returns a specialized + function for looking up owners (filesystems, etc.) + which reside on block device [disk]. + + [disk] must be a block device of the machine. + + The specialized lookup function that is returned + can be called as [lookup offset] to look up the + owners of byte offset [offset]. + + Returns a list of [(owner, owner_offset)] where [owner] + is the filesystem, etc., and [owner_offset] is the byte + offset relative to the owner. + + It is common for there to be multiple owners: for example + in the case where a filesystem is created on a partition, + both the filesystem ([`Filesystem fs]) and + partition scheme ([`Partitions parts]) will be returned. + + The specialized function is efficient. {!create_ownership} + creates a tree structure which allows ownership to be determined + in just a few steps. *) + (** {2 Debugging} *) val debug : bool ref