diff options
| author | William Kucharski <William.Kucharski@Sun.COM> | 2010-03-27 02:26:25 -0600 |
|---|---|---|
| committer | William Kucharski <William.Kucharski@Sun.COM> | 2010-03-27 02:26:25 -0600 |
| commit | 80cb75f4d9571f1433193b5cd8cc7d22469e0848 (patch) | |
| tree | 58d22e820ef4413b34f4bdb3cd7e671fa14ecba4 /usr/src/cmd/halt | |
| parent | 3344d7501f5a54d4cb5703f67648ea334c1cec6a (diff) | |
| download | illumos-joyent-80cb75f4d9571f1433193b5cd8cc7d22469e0848.tar.gz | |
6934528 reboot -f -e mybooenv does not work on OpenSolaris
Diffstat (limited to 'usr/src/cmd/halt')
| -rw-r--r-- | usr/src/cmd/halt/halt.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/usr/src/cmd/halt/halt.c b/usr/src/cmd/halt/halt.c index 17f95c635a..528823531e 100644 --- a/usr/src/cmd/halt/halt.c +++ b/usr/src/cmd/halt/halt.c @@ -117,12 +117,10 @@ static ctid_t startdct = -1; #define FMRI_STARTD_CONTRACT \ "svc:/system/svc/restarter:default/:properties/restarter/contract" -#define ZONEADM_PROG "/usr/sbin/zoneadm" - -#define LUUMOUNT_PROG "/usr/sbin/luumount" -#define LUMOUNT_PROG "/usr/sbin/lumount" - +#define BEADM_PROG "/usr/sbin/beadm" #define BOOTADM_PROG "/sbin/bootadm" +#define ZONEADM_PROG "/usr/sbin/zoneadm" + /* * The length of FASTBOOT_MOUNTPOINT must be less than MAXPATHLEN. */ @@ -946,21 +944,26 @@ halt_exec(const char *path, ...) } /* - * Invokes lumount for bename. - * At successfull completion returns zero and copies contents of bename - * into mountpoint[] + * Mount the specified BE. + * + * Upon success returns zero and copies bename string to mountpoint[] */ static int fastboot_bename(const char *bename, char *mountpoint, size_t mpsz) { int rc; - (void) halt_exec(LUUMOUNT_PROG, "-n", bename, NULL); + /* + * Attempt to unmount the BE first in case it's already mounted + * elsewhere. + */ + (void) halt_exec(BEADM_PROG, "umount", bename, NULL); - if ((rc = halt_exec(LUMOUNT_PROG, "-n", bename, FASTBOOT_MOUNTPOINT, + if ((rc = halt_exec(BEADM_PROG, "mount", bename, FASTBOOT_MOUNTPOINT, NULL)) != 0) - (void) fprintf(stderr, gettext("%s: Cannot mount BE %s\n"), - cmdname, bename); + (void) fprintf(stderr, + gettext("%s: Unable to mount BE \"%s\" at %s\n"), + cmdname, bename, FASTBOOT_MOUNTPOINT); else (void) strlcpy(mountpoint, FASTBOOT_MOUNTPOINT, mpsz); @@ -1660,7 +1663,7 @@ fail: if (fast_reboot == 1) { if (bename) { - (void) halt_exec(LUUMOUNT_PROG, "-n", bename, NULL); + (void) halt_exec(BEADM_PROG, "umount", bename, NULL); } else if (strlen(fastboot_mounted) != 0) { (void) umount(fastboot_mounted); |
