From 4787b0cf1fed31651621a0d80c1212450cfe2f8e Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Fri, 11 Oct 2019 23:04:51 +0200 Subject: [PATCH] remove unnecessary freebsd-specific teardown code (bhyvectl --destroy), since 0.6 reverted privdrop --- src/vmm_unix.ml | 19 +++++-------------- src/vmm_unix.mli | 4 +--- src/vmm_vmmd.ml | 4 ++-- 3 files changed, 8 insertions(+), 19 deletions(-) diff --git a/src/vmm_unix.ml b/src/vmm_unix.ml index f867811..498953e 100644 --- a/src/vmm_unix.ml +++ b/src/vmm_unix.ml @@ -150,25 +150,16 @@ let prepare name vm = Bos.OS.File.write (Name.image_file name) (Cstruct.to_string image) >>= fun () -> Ok (List.rev taps) -let free_resources name taps = - (* same order as prepare! *) - Bos.OS.File.delete (Name.image_file name) >>= fun () -> - Bos.OS.File.delete (Name.fifo_file name) >>= fun () -> - List.fold_left (fun r n -> r >>= fun () -> destroy_tap n) (Ok ()) taps - let vm_device vm = match Lazy.force uname with | x when x = "FreeBSD" -> Ok ("solo5-" ^ string_of_int vm.Unikernel.pid) | _ -> Error (`Msg "don't know what you mean, sorry") -let shutdown name vm = - (* since solo5 0.4.1, it drops privileges on FreeBSD *) - (* this results in solo5-hvt not being able to sysctl hw.vmm.destroy *) - (match Lazy.force uname, vm_device vm with - | x, Ok name when x = "FreeBSD" -> - ignore (Bos.OS.Cmd.run Bos.Cmd.(v "bhyvectl" % "--destroy" % ("--vm=" ^ name))) - | _ -> ()) ; - free_resources name vm.Unikernel.taps +let free_system_resources name taps = + (* same order as prepare! *) + Bos.OS.File.delete (Name.image_file name) >>= fun () -> + Bos.OS.File.delete (Name.fifo_file name) >>= fun () -> + List.fold_left (fun r n -> r >>= fun () -> destroy_tap n) (Ok ()) taps let cpuset cpu = let cpustring = string_of_int cpu in diff --git a/src/vmm_unix.mli b/src/vmm_unix.mli index 1c97a7c..54007d1 100644 --- a/src/vmm_unix.mli +++ b/src/vmm_unix.mli @@ -9,9 +9,7 @@ val prepare : Name.t -> Unikernel.config -> (string list, [> R.msg ]) result val exec : Name.t -> Unikernel.config -> string list -> Name.t option -> (Unikernel.t, [> R.msg ]) result -val free_resources : Name.t -> string list -> (unit, [> R.msg ]) result - -val shutdown : Name.t -> Unikernel.t -> (unit, [> R.msg ]) result +val free_system_resources : Name.t -> string list -> (unit, [> R.msg ]) result val destroy : Unikernel.t -> unit diff --git a/src/vmm_vmmd.ml b/src/vmm_vmmd.ml index 26d0ee2..7ec9bed 100644 --- a/src/vmm_vmmd.ml +++ b/src/vmm_vmmd.ml @@ -152,7 +152,7 @@ let handle_create t hdr name vm_config = let t, stat_out = setup_stats t name vm in (t, stat_out, log_out, (hdr, `Success (`String "created VM")), name, vm) and fail () = - match Vmm_unix.free_resources name taps with + match Vmm_unix.free_system_resources name taps with | Ok () -> (hdr, `Failure "could not create VM: console failed") | Error (`Msg msg) -> let m = "could not create VM: console failed, and also " ^ msg ^ " while cleaning resources" in @@ -162,7 +162,7 @@ let handle_create t hdr name vm_config = `Create (cons_out, success, fail)) let handle_shutdown t name vm r = - (match Vmm_unix.shutdown name vm with + (match Vmm_unix.free_system_resources name vm.Unikernel.taps with | Ok () -> () | Error (`Msg e) -> Logs.warn (fun m -> m "%s while shutdown vm %a" e Unikernel.pp vm)) ; let resources = match Vmm_resources.remove_vm t.resources name with