Date: Fri, 14 Oct 2011 11:58:47 -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: <CACqU3MVgDH9URcuPaGOYLVV9xw5TgRsWLaa%2BS7OwpL4B3pwJTw@mail.gmail.com> In-Reply-To: <1318607697-31950-1-git-send-email-lacombar@gmail.com> References: <4E984BF9.4000700@FreeBSD.org> <1318607697-31950-1-git-send-email-lacombar@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, On Fri, Oct 14, 2011 at 11:54 AM, Arnaud Lacombe <lacombar@gmail.com> wrote= : > Andry Gapon wrote: >> Simple: revert to the previous behavior. =A0If a user enters incorrect d= evice name >>(i.e. root mounting fails), then return back to the prompt instead of pan= icing. > That should do the job. > Actually, my primary interest in that patch was to be able to hit <enter> to be sure I had the prompt (think a serial console connecting after the message has been displayed), then enter the information. Not sure that'd suit what you expect though. - Arnaud > =A0- Arnaud > > --- > =A0sys/kern/vfs_mountroot.c | =A0 45 +++++++++++++++++++++++-------------= --------- > =A01 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) > =A0 =A0 =A0 =A0printf("\n"); > =A0 =A0 =A0 =A0printf(" =A0? =A0 =A0 =A0 =A0 =A0 =A0 =A0 List valid disk = boot devices\n"); > =A0 =A0 =A0 =A0printf(" =A0. =A0 =A0 =A0 =A0 =A0 =A0 =A0 Yield 1 second (= for background tasks)\n"); > - =A0 =A0 =A0 printf(" =A0<empty line> =A0 =A0Abort manual input\n"); > + =A0 =A0 =A0 printf(" =A0x =A0 =A0 =A0 =A0 =A0 =A0 =A0 Abort manual inpu= t)\n"); > + > + =A0 =A0 =A0 do { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 error =3D EINVAL; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 printf("\nmountroot> "); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 gets(name, sizeof(name), GETS_ECHO); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (name[0] =3D=3D '?') { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 printf("\nList of GEOM mana= ged disk devices:\n =A0"); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 g_dev_print(); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 continue; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (name[0] =3D=3D '.') { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pause("rmask", hz); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 continue; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (name[0] =3D=3D 'x' && name[1] =3D=3D '\= 0') > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 break; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 mnt =3D name; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 error =3D parse_mount(&mnt); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (error < 0) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 printf("Invalid specificati= on.\n"); > + =A0 =A0 =A0 } while (error !=3D 0); > > - again: > - =A0 =A0 =A0 printf("\nmountroot> "); > - =A0 =A0 =A0 gets(name, sizeof(name), GETS_ECHO); > - =A0 =A0 =A0 if (name[0] =3D=3D '\0') > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 return (0); > - =A0 =A0 =A0 if (name[0] =3D=3D '?') { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 printf("\nList of GEOM managed disk devices= :\n =A0"); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 g_dev_print(); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto again; > - =A0 =A0 =A0 } > - =A0 =A0 =A0 if (name[0] =3D=3D '.') { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 pause("rmask", hz); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto again; > - =A0 =A0 =A0 } > - =A0 =A0 =A0 mnt =3D name; > - =A0 =A0 =A0 error =3D parse_mount(&mnt); > - =A0 =A0 =A0 if (error =3D=3D -1) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 printf("Invalid specification.\n"); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto again; > - =A0 =A0 =A0 } > =A0 =A0 =A0 =A0return (error); > =A0} > > -- > 1.7.6.153.g78432 > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACqU3MVgDH9URcuPaGOYLVV9xw5TgRsWLaa%2BS7OwpL4B3pwJTw>