Date: Tue, 11 Feb 2014 14:11:33 -0500 From: John Baldwin <jhb@freebsd.org> To: freebsd-virtualization@freebsd.org Subject: Re: Detect of BHyve VM was powered off or rebooted? Message-ID: <201402111411.33269.jhb@freebsd.org> In-Reply-To: <CAFgRE9Fw308%2BA14c1ttXj%2BYv-CMVRZ-DSE_9DWz46sfpdWg3PQ@mail.gmail.com> References: <CAG=rPVcfYQ2nUaZYuc6teL2r%2BQZzxhuoV052zgf6=Dxh8MeNcA@mail.gmail.com> <CAFgRE9Fw308%2BA14c1ttXj%2BYv-CMVRZ-DSE_9DWz46sfpdWg3PQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday, February 09, 2014 7:03:41 pm Neel Natu wrote: > Hi Craig, > > On Sun, Feb 9, 2014 at 1:11 PM, Craig Rodrigues <rodrigc@freebsd.org> wrote: > > Hi, > > > > I posted some rc.d scripts that I am using to boot a BHyve VM > > and send the output to a serial console using the /dev/nmdm > > driver: > > > > http://lists.freebsd.org/pipermail/freebsd-virtualization/2014- January/002040.html > > > > It works quite well. There is some things I would like to improve, > > and would like some advice on the best way to do it. > > > > (1) If the VM was destroyed with bhyvectl --destroy --vm ${VM_NAME}, > > then I do not want to automatically restart the VM in the script. > > User should manually: service bhyvevm start > > > > (2) If the VM was powered down, via shutdown -p, or halt -p, > > then in my script I do not want to restart the VM in the script. > > User should manually: service bhyvevm start > > > > (3) If the VM was rebooted via "reboot" or "shutdown -r", > > then I *do* want the script to restart the VM. > > > > I think if I change my start_vm.sh script to do something like: > > > > > > > > ( > > while [ -e /dev/vmm/${VM} ]; do > > /usr/sbin/bhyve -c 16 -m 8G -A -H -P -g 0 -s 0:0,hostbridge -s 1:0,lpc > > -s 2:0,virtio-net,${TAP} -s 3:0,virtio-blk,${IMG} -l com1,${CONS_A} ${VM}" > > done > > > > ) & > > > > > > then this might cover cases (1) and (3), but what will cover > > case (2)? > > The exit code of the bhyve process will be 0 if it exited because the > guest rebooted and will be non-zero if the guest did an acpi poweroff. > You can use that to distinguish between cases (2) and (3). > > Having said that there are error conditions for which bhyve exits with > a non-zero exit code. So, we'll need to explicitly define an exit code > to distinguish between an acpi poweroff and these error conditions. OTOH, in all the cases when bhyve exits with a non-zero exit code, you will want to exit the loop which would treat it the same as shutdown -p. I think you can just do this: while [ -e /dev/vmm/${VM} ]; do if ! bhyve ...; then break fi done -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402111411.33269.jhb>