A little question about safe mode
Andriy Gapon
avg at FreeBSD.org
Thu Oct 18 17:53:06 UTC 2012
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 :-)
--
Andriy Gapon
More information about the freebsd-current
mailing list