summaryrefslogtreecommitdiff
path: root/usr/src/cmd/halt
diff options
context:
space:
mode:
authorWilliam Kucharski <William.Kucharski@Sun.COM>2010-03-27 02:26:25 -0600
committerWilliam Kucharski <William.Kucharski@Sun.COM>2010-03-27 02:26:25 -0600
commit80cb75f4d9571f1433193b5cd8cc7d22469e0848 (patch)
tree58d22e820ef4413b34f4bdb3cd7e671fa14ecba4 /usr/src/cmd/halt
parent3344d7501f5a54d4cb5703f67648ea334c1cec6a (diff)
downloadillumos-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.c29
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);