Index: head/sys/kern/vfs_mountroot.c =================================================================== --- head/sys/kern/vfs_mountroot.c (revision 228491) +++ head/sys/kern/vfs_mountroot.c (working copy) @@ -500,8 +500,6 @@ parse_dir_ask(char **conf) } mnt = name; error = parse_mount(&mnt); - if (error == -1) - printf("Invalid file system specification.\n"); } while (error != 0); return (error); @@ -562,7 +560,7 @@ parse_dir_md(char **conf) goto out; if (mdio->md_unit > 9) { - printf("rootmount: too many md units\n"); + printf("mountroot: too many md units\n"); mdio->md_file = NULL; mdio->md_options = 0; mdio->md_mediasize = 0; @@ -603,7 +601,7 @@ parse_dir_onfail(char **conf) else if (!strcmp(action, "retry")) root_mount_onfail = A_RETRY; else { - printf("rootmount: %s: unknown action\n", action); + printf("mountroot: %s: unknown action\n", action); error = EINVAL; } @@ -681,11 +679,14 @@ parse_mount(char **conf) int delay, error, timeout; error = parse_token(conf, &tok); - if (error) + if (error) { + printf("mountroot: invalid filesystem specification.\n"); return (error); + } fs = tok; error = parse_skipto(&tok, ':'); if (error) { + printf("mountroot: invalid filesystem specification.\n"); free(fs, M_TEMP); return (error); } @@ -785,6 +786,12 @@ retry: break; default: error = parse_mount(&conf); + /* + * Ignore mount errors when .onfail mode is set + * to continue. + */ + if (error < 0 && root_mount_onfail == A_CONTINUE) + error = 0; break; } if (error < 0) @@ -824,7 +831,7 @@ vfs_mountroot_conf0(struct sbuf *sb) char *s, *tok, *mnt, *opt; int error; - sbuf_printf(sb, ".onfail panic\n"); + sbuf_printf(sb, ".onfail continue\n"); sbuf_printf(sb, ".timeout %d\n", root_mount_timeout); if (boothowto & RB_ASKNAME) sbuf_printf(sb, ".ask\n");