diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2018-03-15 14:28:39 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2018-03-15 14:47:08 +0000 |
commit | 670823da472498e267a5aa84a4f71885fa7c175f (patch) | |
tree | 2e952910be15c9110da348c0feb815d5afdd267b | |
parent | 8b01be43d736359f1a7339c7e752c0b2b977d375 (diff) | |
download | illumos-joyent-670823da472498e267a5aa84a4f71885fa7c175f.tar.gz |
OS-6777 bhyve VM not rebooting
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Reviewed by: John Levon <john.levon@joyent.com>
Reviewed by: Mike Gerdts <mike.gerdts@joyent.com>
Approved by: John Levon <john.levon@joyent.com>
-rw-r--r-- | usr/src/lib/brand/bhyve/zone/boot.c | 32 | ||||
-rw-r--r-- | usr/src/lib/brand/bhyve/zone/config.xml | 1 |
2 files changed, 30 insertions, 3 deletions
diff --git a/usr/src/lib/brand/bhyve/zone/boot.c b/usr/src/lib/brand/bhyve/zone/boot.c index 88641d567a..51a363b8da 100644 --- a/usr/src/lib/brand/bhyve/zone/boot.c +++ b/usr/src/lib/brand/bhyve/zone/boot.c @@ -35,7 +35,7 @@ #define BHYVE_DIR "var/run/bhyve" #define BHYVE_ARGS_FILE BHYVE_DIR "/" "zhyve.cmd" -#define ZH_MAXARGS 100 +#define ZH_MAXARGS 100 #define DEFAULT_BOOTROM "/usr/share/bhyve/uefi-csm-rom.bin" @@ -205,7 +205,7 @@ add_nets(int *argc, char **argv) char slotconf[MAXNAMELEN]; char *primary = NULL; - if ((nets = get_zcfg_var("net", "resources", NULL))== NULL) { + if ((nets = get_zcfg_var("net", "resources", NULL)) == NULL) { return (0); } @@ -381,6 +381,31 @@ init_debug(void) debug = (val != NULL && val[0] != '\0'); } +static int +setup_reboot(char *zonename) +{ + zoneid_t zoneid; + + if ((zoneid = getzoneidbyname(zonename)) < 0) { + (void) printf("Error: bhyve zoneid (%s) does not exist\n", + zonename); + return (-1); + } + + if (zoneid == GLOBAL_ZONEID) { + (void) printf("Error: bhyve global zoneid (%s)\n", zonename); + return (-1); + } + + if (zone_setattr(zoneid, ZONE_ATTR_INITREBOOT, NULL, 0) < 0 || + zone_setattr(zoneid, ZONE_ATTR_INITRESTART0, NULL, 0) < 0) { + (void) printf("Error: bhyve zoneid %d setattr failed: %s\n", + zoneid, strerror(errno)); + return (-1); + } + + return (0); +} int main(int argc, char **argv) @@ -410,6 +435,9 @@ main(int argc, char **argv) zonename = argv[1]; zonepath = argv[2]; + if (setup_reboot(zonename) < 0) + return (1); + for (zhargc = 0; zhargv[zhargc] != NULL; zhargc++) { dprintf(("def_arg: argv[%d]='%s'\n", zhargc, zhargv[zhargc])); } diff --git a/usr/src/lib/brand/bhyve/zone/config.xml b/usr/src/lib/brand/bhyve/zone/config.xml index 1dc3143fad..82b95f4e57 100644 --- a/usr/src/lib/brand/bhyve/zone/config.xml +++ b/usr/src/lib/brand/bhyve/zone/config.xml @@ -22,7 +22,6 @@ <modname></modname> <initname>/usr/lib/brand/bhyve/zhyve</initname> - <restartinit>false</restartinit> <login_cmd /> <forcedlogin_cmd /> <user_cmd /> |