X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=lib%2Fdiskimage_impl.ml;h=4e338d2c14846ed247ec434ea0e85612ce1839d1;hb=554b96246db7b4db7972a0aa50eb33d4d6039ab6;hp=18af6357d75b0d698a17e27bb33ee1b486a38c2a;hpb=71536ae75dceb08e0f3c3403033fb2eb25a08883;p=virt-df.git diff --git a/lib/diskimage_impl.ml b/lib/diskimage_impl.ml index 18af635..4e338d2 100644 --- a/lib/diskimage_impl.ml +++ b/lib/diskimage_impl.ml @@ -240,6 +240,7 @@ and lv = { and partitioner_probe = device -> partitions and partitioner_callbacks = { + parts_cb_uq : int; parts_cb_name : string; parts_cb_offset_is_free : partitions -> Int63.t -> bool; } @@ -247,6 +248,7 @@ and partitioner_callbacks = { and filesystem_probe = device -> filesystem and filesystem_callbacks = { + fs_cb_uq : int; fs_cb_name : string; fs_cb_printable_name : string; fs_cb_offset_is_free : filesystem -> Int63.t -> bool; @@ -255,6 +257,7 @@ and filesystem_callbacks = { and lvm_probe = device -> pv and lvm_callbacks = { + lvm_cb_uq : int; lvm_cb_name : string; lvm_cb_list_lvs : pv list -> lv list; lvm_cb_offset_is_free : pv -> Int63.t -> bool; @@ -388,6 +391,17 @@ let probe_for_pv dev = ); r +(* This allows plug-ins to attach their own private data to + * the normal plug-in structures (partitions, filesystem, pv, etc.) + *) +let private_data_functions get_key = + let h = Hashtbl.create 13 in + (fun struc data -> + Hashtbl.replace h (get_key struc) data), + (fun struc -> + try Hashtbl.find h (get_key struc) + with Not_found -> assert false (* internal error in the plug-in *)) + (*----------------------------------------------------------------------*) (* Create machine description. *) let open_machine name disks =