svn commit: r226906 - stable/9/sys/kern
Marcel Moolenaar
marcel at FreeBSD.org
Sat Oct 29 16:38:05 UTC 2011
Author: marcel
Date: Sat Oct 29 16:38:04 2011
New Revision: 226906
URL: http://svn.freebsd.org/changeset/base/226906
Log:
MFC r226673:
Don't terminate the interactive root mount prompt on mount failure.
This restores the previous behaviour. While here, match '?' and '.'
inputs exactly and improve the error message.
Requested by: avg@
Derived from a patch by: Arnaud Lacombe <lacombar at gmail.com>
Approved by: re (kib@)
Modified:
stable/9/sys/kern/vfs_mountroot.c
Directory Properties:
stable/9/sys/ (props changed)
stable/9/sys/amd64/include/xen/ (props changed)
stable/9/sys/boot/ (props changed)
stable/9/sys/boot/i386/efi/ (props changed)
stable/9/sys/boot/ia64/efi/ (props changed)
stable/9/sys/boot/ia64/ski/ (props changed)
stable/9/sys/boot/powerpc/boot1.chrp/ (props changed)
stable/9/sys/boot/powerpc/ofw/ (props changed)
stable/9/sys/cddl/contrib/opensolaris/ (props changed)
stable/9/sys/conf/ (props changed)
stable/9/sys/contrib/dev/acpica/ (props changed)
stable/9/sys/contrib/octeon-sdk/ (props changed)
stable/9/sys/contrib/pf/ (props changed)
stable/9/sys/contrib/x86emu/ (props changed)
Modified: stable/9/sys/kern/vfs_mountroot.c
==============================================================================
--- stable/9/sys/kern/vfs_mountroot.c Sat Oct 29 13:50:15 2011 (r226905)
+++ stable/9/sys/kern/vfs_mountroot.c Sat Oct 29 16:38:04 2011 (r226906)
@@ -483,26 +483,27 @@ parse_dir_ask(char **conf)
printf(" . Yield 1 second (for background tasks)\n");
printf(" <empty line> Abort manual input\n");
- again:
- printf("\nmountroot> ");
- gets(name, sizeof(name), GETS_ECHO);
- if (name[0] == '\0')
- return (0);
- if (name[0] == '?') {
- printf("\nList of GEOM managed disk devices:\n ");
- g_dev_print();
- goto again;
- }
- if (name[0] == '.') {
- pause("rmask", hz);
- goto again;
- }
- mnt = name;
- error = parse_mount(&mnt);
- if (error == -1) {
- printf("Invalid specification.\n");
- goto again;
- }
+ do {
+ error = EINVAL;
+ printf("\nmountroot> ");
+ gets(name, sizeof(name), GETS_ECHO);
+ if (name[0] == '\0')
+ break;
+ if (name[0] == '?' && name[1] == '\0') {
+ printf("\nList of GEOM managed disk devices:\n ");
+ g_dev_print();
+ continue;
+ }
+ if (name[0] == '.' && name[1] == '\0') {
+ pause("rmask", hz);
+ continue;
+ }
+ mnt = name;
+ error = parse_mount(&mnt);
+ if (error == -1)
+ printf("Invalid file system specification.\n");
+ } while (error != 0);
+
return (error);
}
More information about the svn-src-all
mailing list