# HG changeset patch
# User David Scott <[email protected]>
# Date 1282565815 -3600
# Node ID 2b18e28b785b150c42ff1ffe52eaae906365bc42
# Parent  59d698275079a28b784df5651337ca7716746b67
CA-43021: Fix bug detecting the backing vhd file caused by reading the wrong 
device's minor number.

Signed-off-by: David Scott <[email protected]>

diff -r 59d698275079 -r 2b18e28b785b ocaml/xapi/sparse_dd.ml
--- a/ocaml/xapi/sparse_dd.ml   Mon Aug 23 13:16:53 2010 +0100
+++ b/ocaml/xapi/sparse_dd.ml   Mon Aug 23 13:16:55 2010 +0100
@@ -353,18 +353,23 @@
                        match Tapctl.of_device (Tapctl.create ()) path with
                        | _, _, (Some (_, vhd)) -> Some vhd
                        | _, _, _ -> raise Not_found
-               with Not_found -> None in
-       match tapdisk_of_path path with
-       | Some vhd -> Some vhd
-       | None ->
-               begin match find_underlying_tapdisk path with
-               | Some path ->
-                       begin match tapdisk_of_path path with
-                       | Some vhd -> Some vhd
-                       | None -> None
-                       end
+               with Tapctl.Not_blktap ->
+                       Printf.printf "Device %s is not controlled by blktap\n" 
path;
+                       None
+               | Tapctl.Not_a_device ->
+                       Printf.printf "%s is not a device\n" path;
+                       None
+               | _ -> 
+                       Printf.printf "Device %s has an unknown driver\n" path;
+                       None in
+       begin match find_underlying_tapdisk path with
+       | Some path ->
+               begin match tapdisk_of_path path with
+               | Some vhd -> Some vhd
                | None -> None
                end
+       | None -> None
+       end
 
 let deref_symlinks path = 
        let rec inner seen_already path = 
@@ -472,6 +477,7 @@
        end;
        let empty = Bat.of_list [] in
 
+       Printf.printf "src = %s; dest = %s; base = %s; size = %Ld\n" 
(Opt.default "None" !src) (Opt.default "None" !dest) (Opt.default "None" !base) 
!size;
         let size = Some !size in
 
        (** [chain_of_device device] returns [None] if [device] is None.
@@ -484,7 +490,7 @@
                let vhd : string option = flatten (Opt.map vhd_of_device 
device) in
                let chain : string list option = Opt.map chain_of_vhd vhd in
                let option y = Opt.default "None" (Opt.map (fun x -> "Some " ^ 
x) y) in
-               Printf.printf "%s has chain: [ %s ]" (option device) (option 
(Opt.map (String.concat "; ") chain));
+               Printf.printf "%s has chain: [ %s ]\n" (option device) (option 
(Opt.map (String.concat "; ") chain));
                chain in
 
        let bat : Bat.t option = 
 ocaml/xapi/sparse_dd.ml |  28 +++++++++++++++++-----------
 1 files changed, 17 insertions(+), 11 deletions(-)


# HG changeset patch
# User David Scott <[email protected]>
# Date 1282565815 -3600
# Node ID 2b18e28b785b150c42ff1ffe52eaae906365bc42
# Parent  59d698275079a28b784df5651337ca7716746b67
CA-43021: Fix bug detecting the backing vhd file caused by reading the wrong device's minor number.

Signed-off-by: David Scott <[email protected]>

diff -r 59d698275079 -r 2b18e28b785b ocaml/xapi/sparse_dd.ml
--- a/ocaml/xapi/sparse_dd.ml	Mon Aug 23 13:16:53 2010 +0100
+++ b/ocaml/xapi/sparse_dd.ml	Mon Aug 23 13:16:55 2010 +0100
@@ -353,18 +353,23 @@
 			match Tapctl.of_device (Tapctl.create ()) path with
 			| _, _, (Some (_, vhd)) -> Some vhd
 			| _, _, _ -> raise Not_found
-		with Not_found -> None in
-	match tapdisk_of_path path with
-	| Some vhd -> Some vhd
-	| None ->
-		begin match find_underlying_tapdisk path with
-		| Some path ->
-			begin match tapdisk_of_path path with
-			| Some vhd -> Some vhd
-			| None -> None
-			end
+		with Tapctl.Not_blktap ->
+			Printf.printf "Device %s is not controlled by blktap\n" path;
+			None
+		| Tapctl.Not_a_device ->
+			Printf.printf "%s is not a device\n" path;
+			None
+		| _ -> 
+			Printf.printf "Device %s has an unknown driver\n" path;
+			None in
+	begin match find_underlying_tapdisk path with
+	| Some path ->
+		begin match tapdisk_of_path path with
+		| Some vhd -> Some vhd
 		| None -> None
 		end
+	| None -> None
+	end
 
 let deref_symlinks path = 
 	let rec inner seen_already path = 
@@ -472,6 +477,7 @@
 	end;
 	let empty = Bat.of_list [] in
 
+	Printf.printf "src = %s; dest = %s; base = %s; size = %Ld\n" (Opt.default "None" !src) (Opt.default "None" !dest) (Opt.default "None" !base) !size;
         let size = Some !size in
 
 	(** [chain_of_device device] returns [None] if [device] is None.
@@ -484,7 +490,7 @@
 		let vhd : string option = flatten (Opt.map vhd_of_device device) in
 		let chain : string list option = Opt.map chain_of_vhd vhd in
 		let option y = Opt.default "None" (Opt.map (fun x -> "Some " ^ x) y) in
-		Printf.printf "%s has chain: [ %s ]" (option device) (option (Opt.map (String.concat "; ") chain));
+		Printf.printf "%s has chain: [ %s ]\n" (option device) (option (Opt.map (String.concat "; ") chain));
 		chain in
 
 	let bat : Bat.t option = 
_______________________________________________
xen-api mailing list
[email protected]
http://lists.xensource.com/mailman/listinfo/xen-api

Reply via email to