Date: Fri, 19 Oct 2012 08:52:35 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-current@freebsd.org Cc: Alexander Yerenkow <yerenkow@gmail.com>, Andriy Gapon <avg@freebsd.org> Subject: Re: A little question about safe mode Message-ID: <201210190852.35915.jhb@freebsd.org> In-Reply-To: <508041F9.9050906@FreeBSD.org> References: <CAPJF9wm-dvUwgQzZzijakD=FBM9HTBQ%2BF4jC510KX%2BUOG-SfgA@mail.gmail.com> <50802138.8020604@FreeBSD.org> <508041F9.9050906@FreeBSD.org>
index | next in thread | previous in thread | raw e-mail
On Thursday, October 18, 2012 1:52:57 pm Andriy Gapon wrote:
> on 18/10/2012 18:33 Andriy Gapon said the following:
> > on 18/10/2012 18:20 Andriy Gapon said the following:
> >> My guess is that the easiest way to avoid this ambiguity and the confusion that it
> >> causes (like the problem you described above) is to prepend "/dev/", if it's
> >> missing, right in vfs_mountroot.c before calling kernel_mount().
> >
> > A patch (not tested):
> >
> > --- a/sys/kern/vfs_mountroot.c
> > +++ b/sys/kern/vfs_mountroot.c
> > @@ -676,6 +676,7 @@ static int
> > parse_mount(char **conf)
> > {
> > char errmsg[255];
> > + char devbuf[MNAMELEN];
> > struct mntarg *ma;
> > char *dev, *fs, *opts, *tok;
> > int delay, error, timeout;
> > @@ -693,6 +694,11 @@ parse_mount(char **conf)
> > parse_advance(&tok);
> > dev = tok;
> >
> > + if (dev[0] != '\0' && strncmp(dev, "/dev/", 5) != 0) {
> > + snprintf(devbuf, sizeof(devbuf), "/dev/%s", dev);
> > + dev = devbuf;
> > + }
> > +
> > if (root_mount_mddev != -1) {
> > /* Handle substitution for the md unit number. */
> > tok = strstr(dev, "md#");
> >
> >
>
> Oops, the patch incorrectly assumes that all "device names" are device names,
> which is incorrect e.g. for ZFS. Maybe some other filesystems too.
> So don't try it :-)
It seems that perhaps what you want to do is try it with /dev/ and if that
doesn't work, fall back to the raw string?
--
John Baldwin
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201210190852.35915.jhb>
