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;
|
struct thread *td;
|
||||||
int timeout;
|
int timeout;
|
||||||
int delay;
|
int delay;
|
||||||
|
char *s;
|
||||||
|
|
||||||
timeout = BOOTP_IFACE_WAIT_TIMEOUT * hz;
|
timeout = BOOTP_IFACE_WAIT_TIMEOUT * hz;
|
||||||
delay = hz / 10;
|
delay = hz / 10;
|
||||||
@ -1527,6 +1528,21 @@ bootpc_init(void)
|
|||||||
if (nfs_diskless_valid != 0)
|
if (nfs_diskless_valid != 0)
|
||||||
return;
|
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);
|
gctx = malloc(sizeof(*gctx), M_TEMP, M_WAITOK | M_ZERO);
|
||||||
STAILQ_INIT(&gctx->interfaces);
|
STAILQ_INIT(&gctx->interfaces);
|
||||||
gctx->xid = ~0xFFFF;
|
gctx->xid = ~0xFFFF;
|
||||||
|
Loading…
Reference in New Issue
Block a user