Re: possible mountroot regression

看板FB_current作者時間14年前 (2011/10/15 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串13/22 (看更多)
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 > > _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
文章代碼(AID): #1Ec7ZX2m (FB_current)
討論串 (同標題文章)
文章代碼(AID): #1Ec7ZX2m (FB_current)