Date: Fri, 14 Oct 2011 11:54:57 -0400 From: Arnaud Lacombe <lacombar@gmail.com> To: avg@freebsd.org Cc: FreeBSD Current <freebsd-current@freebsd.org>, Arnaud Lacombe <lacombar@gmail.com> Subject: Re: possible mountroot regression Message-ID: <1318607697-31950-1-git-send-email-lacombar@gmail.com> In-Reply-To: <4E984BF9.4000700@FreeBSD.org> References: <4E984BF9.4000700@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Andry Gapon wrote:
> Simple: revert to the previous behavior. If a user enters incorrect device name
>(i.e. root mounting fails), then return back to the prompt instead of panicing.
That should do the job.
- Arnaud
---
sys/kern/vfs_mountroot.c | 45 +++++++++++++++++++++++----------------------
1 files changed, 23 insertions(+), 22 deletions(-)
diff --git a/sys/kern/vfs_mountroot.c b/sys/kern/vfs_mountroot.c
index ccbcb33..ae3ffa7 100644
--- a/sys/kern/vfs_mountroot.c
+++ b/sys/kern/vfs_mountroot.c
@@ -481,28 +481,29 @@ parse_dir_ask(char **conf)
printf("\n");
printf(" ? List valid disk boot devices\n");
printf(" . Yield 1 second (for background tasks)\n");
- printf(" <empty line> Abort manual input\n");
+ printf(" x Abort manual input)\n");
+
+ do {
+ error = EINVAL;
+ printf("\nmountroot> ");
+ gets(name, sizeof(name), GETS_ECHO);
+ if (name[0] == '?') {
+ printf("\nList of GEOM managed disk devices:\n ");
+ g_dev_print();
+ continue;
+ }
+ if (name[0] == '.') {
+ pause("rmask", hz);
+ continue;
+ }
+ if (name[0] == 'x' && name[1] == '\0')
+ break;
+ mnt = name;
+ error = parse_mount(&mnt);
+ if (error < 0)
+ printf("Invalid specification.\n");
+ } while (error != 0);
- 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;
- }
return (error);
}
--
1.7.6.153.g78432
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1318607697-31950-1-git-send-email-lacombar>
