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 _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"