mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-22 15:47:37 +00:00
Add the possibility for vfs.root.mountfrom tunable to accept a list of
items rather than a single one. The list is a space separated collection of items defined as the current one accepted. While there fix also a nit in a comment. Obtained from: Sandvine Incorporated Reviewed by: emaste Tested by: Giovanni Trematerra <giovanni dot trematerra at gmail dot com> Sponsored by: Sandvine Incorporated MFC: 2 weeks
This commit is contained in:
parent
4603558264
commit
d113304956
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=199227
@ -104,13 +104,17 @@ struct vnode *rootvnode;
|
||||
* The root filesystem is detailed in the kernel environment variable
|
||||
* vfs.root.mountfrom, which is expected to be in the general format
|
||||
*
|
||||
* <vfsname>:[<path>]
|
||||
* <vfsname>:[<path>][ <vfsname>:[<path>] ...]
|
||||
* vfsname := the name of a VFS known to the kernel and capable
|
||||
* of being mounted as root
|
||||
* path := disk device name or other data used by the filesystem
|
||||
* to locate its physical store
|
||||
*
|
||||
* The environment variable vfs.root.mountfrom options is a comma delimited
|
||||
* If the environment variable vfs.root.mountfrom is a space separated list,
|
||||
* each list element is tried in turn and the root filesystem will be mounted
|
||||
* from the first one that suceeds.
|
||||
*
|
||||
* The environment variable vfs.root.mountfrom.options is a comma delimited
|
||||
* set of string mount options. These mount options must be parseable
|
||||
* by nmount() in the kernel.
|
||||
*/
|
||||
@ -1643,7 +1647,7 @@ vfs_opterror(struct vfsoptlist *opts, const char *fmt, ...)
|
||||
void
|
||||
vfs_mountroot(void)
|
||||
{
|
||||
char *cp, *options;
|
||||
char *cp, *cpt, *options, *tmpdev;
|
||||
int error, i, asked = 0;
|
||||
|
||||
options = NULL;
|
||||
@ -1695,10 +1699,15 @@ vfs_mountroot(void)
|
||||
*/
|
||||
cp = getenv("vfs.root.mountfrom");
|
||||
if (cp != NULL) {
|
||||
error = vfs_mountroot_try(cp, options);
|
||||
cpt = cp;
|
||||
while ((tmpdev = strsep(&cpt, " \t")) != NULL) {
|
||||
error = vfs_mountroot_try(tmpdev, options);
|
||||
if (error == 0) {
|
||||
freeenv(cp);
|
||||
goto mounted;
|
||||
}
|
||||
}
|
||||
freeenv(cp);
|
||||
if (!error)
|
||||
goto mounted;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user