nfs: skip bootpc when vfs.root.mountfrom is other than nfs
If "vfs.root.mountfrom" is set and the value is something other than "nfs:*", it means the user doesn't want to mount root via nfs, there's no reason to continue with bootpc This fixes the powerpcspe kernel (MPC85XXSPE) that's compiled with BOOTP_NFSROOT by default and gets stuck on bootpc/dhcp request loop when no DHCP server is available on the network, even when user specifies a local disk via "vfs.root.mountfrom" kernel parameter. Reviewed by: imp MFC after: 2 weeks Sponsored by: Instituto de Pesquisas Eldorado (eldorado.org.br) Differential Revision: https://reviews.freebsd.org/D35098
This commit is contained in:
parent
9792c7d3eb
commit
3cb9f1976c
@ -1514,6 +1514,7 @@ bootpc_init(void)
|
||||
struct thread *td;
|
||||
int timeout;
|
||||
int delay;
|
||||
char *s;
|
||||
|
||||
timeout = BOOTP_IFACE_WAIT_TIMEOUT * hz;
|
||||
delay = hz / 10;
|
||||
@ -1527,6 +1528,21 @@ bootpc_init(void)
|
||||
if (nfs_diskless_valid != 0)
|
||||
return;
|
||||
|
||||
/*
|
||||
* If "vfs.root.mountfrom" is set and the value is something other
|
||||
* than "nfs:", it means the user doesn't want to mount root via nfs,
|
||||
* there's no reason to continue with bootpc
|
||||
*/
|
||||
if ((s = kern_getenv("vfs.root.mountfrom")) != NULL) {
|
||||
if ((strncmp(s, "nfs:", 4)) != 0) {
|
||||
printf("%s: vfs.root.mountfrom set to %s. "
|
||||
"BOOTP aborted.\n", __func__, s);
|
||||
freeenv(s);
|
||||
return;
|
||||
}
|
||||
freeenv(s);
|
||||
}
|
||||
|
||||
gctx = malloc(sizeof(*gctx), M_TEMP, M_WAITOK | M_ZERO);
|
||||
STAILQ_INIT(&gctx->interfaces);
|
||||
gctx->xid = ~0xFFFF;
|
||||
|
Loading…
Reference in New Issue
Block a user