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
_______________________________________________
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"

Reply via email to