libvirt and rebooting of a bhyve VM

Craig Rodrigues rodrigc at FreeBSD.org
Wed Aug 20 18:51:19 UTC 2014


On Wed, Aug 20, 2014 at 8:15 AM, John Baldwin <jhb at freebsd.org> wrote:
> It probably would be good to document the return codes in the man page, but
> eventually they will all go away.  The long term plan is to make bhyve operate
> more like other hypervisors in which case a single process invocation will
> mimic a power-on to power-off cycle of a machine and you wouldn't need
> vmrun.sh at all (you would just run bhyve with appropriate args / config
> file).  In that case, the return codes will change since it won't exit for
> reboots anymore.


Hi,

I wasn't aware of the longer term direction of bhyve.  If the return
codes may change
in the future, I don't know if it is a good idea to document them in
the man page.

However, documenting the return codes in comments in the vmrun.sh
script might be OK, since it
is just an example that can be changed easily.

What do you think of these changes to vmrun.sh:

 (1)  Move bhyvectl --destroy outside of the while loop.  It doesn't
need to run if the VM has been reset.
 (2)  Write some comments about return code of bhyve process.


--
Craig
-------------- next part --------------
--- share/examples/bhyve/vmrun.sh.orig	2014-08-20 11:38:09.788714905 -0700
+++ share/examples/bhyve/vmrun.sh	2014-08-20 11:43:14.158706821 -0700
@@ -173,9 +173,9 @@
 
 virtio_diskdev="$disk_dev0"
 
-while [ 1 ]; do
-	${BHYVECTL} --vm=${vmname} --destroy > /dev/null 2>&1
+${BHYVECTL} --vm=${vmname} --destroy > /dev/null 2>&1
 
+while [ 1 ]; do
 	file ${virtio_diskdev} | grep "boot sector" > /dev/null
 	rc=$?
 	if [ $rc -ne 0 ]; then
@@ -237,6 +237,14 @@
 		-l com1,${console}					\
 		${installer_opt}					\
 		${vmname}
+	#
+	# bhyve returns the following status codes:
+	#  0 - VM has been reset
+	#  1 - VM has been powered off
+	#  2 - VM has been halted
+	#  3 - VM generated a triple fault
+	#  all other non-zero status codes are errors
+	#
 	if [ $? -ne 0 ]; then
 		break
 	fi


More information about the freebsd-virtualization mailing list