svn commit: r197210 - in head/sys: netinet nfsclient
Bjoern A. Zeeb
bz at FreeBSD.org
Tue Sep 15 15:05:08 UTC 2009
On Tue, 15 Sep 2009, Qing Li wrote:
> Author: qingli
> Date: Tue Sep 15 01:01:03 2009
> New Revision: 197210
> URL: http://svn.freebsd.org/changeset/base/197210
>
> Log:
> The bootp code installs an interface address and the nfs client
> module tries to install the same address again. This extra code
> is removed, which was discovered by the removal of a call to
> in_ifscrub() in r196714. This call to in_ifscrub is put back here
> because the SIOCAIFADDR command can be used to change the prefix
> length of an existing alias.
>
> Reviewed by: kmacy
This broke NFS Root for me in the netperf clsuter setup.
The NFS Root mount hang for ages (I reset the box after 1 hour).
Backing out r197212 and this and it boots just fine again.
> Modified:
> head/sys/netinet/in.c
> head/sys/nfsclient/nfs_vfsops.c
>
> Modified: head/sys/netinet/in.c
> ==============================================================================
> --- head/sys/netinet/in.c Tue Sep 15 00:26:23 2009 (r197209)
> +++ head/sys/netinet/in.c Tue Sep 15 01:01:03 2009 (r197210)
> @@ -536,6 +536,16 @@ in_control(struct socket *so, u_long cmd
> hostIsNew = 0;
> }
> if (ifra->ifra_mask.sin_len) {
> + /*
> + * QL: XXX
> + * Need to scrub the prefix here in case
> + * the issued command is SIOCAIFADDR with
> + * the same address, but with a different
> + * prefix length. And if the prefix length
> + * is the same as before, then the call is
> + * un-necessarily executed here.
> + */
> + in_ifscrub(ifp, ia);
> ia->ia_sockmask = ifra->ifra_mask;
> ia->ia_sockmask.sin_family = AF_INET;
> ia->ia_subnetmask =
> @@ -544,6 +554,7 @@ in_control(struct socket *so, u_long cmd
> }
> if ((ifp->if_flags & IFF_POINTOPOINT) &&
> (ifra->ifra_dstaddr.sin_family == AF_INET)) {
> + in_ifscrub(ifp, ia);
> ia->ia_dstaddr = ifra->ifra_dstaddr;
> maskIsNew = 1; /* We lie; but the effect's the same */
> }
>
> Modified: head/sys/nfsclient/nfs_vfsops.c
> ==============================================================================
> --- head/sys/nfsclient/nfs_vfsops.c Tue Sep 15 00:26:23 2009 (r197209)
> +++ head/sys/nfsclient/nfs_vfsops.c Tue Sep 15 01:01:03 2009 (r197210)
> @@ -463,9 +463,13 @@ nfs_mountroot(struct mount *mp)
> break;
> }
> #endif
> +
> +#if 0 /* QL: XXX */
> error = ifioctl(so, SIOCAIFADDR, (caddr_t)&nd->myif, td);
> if (error)
> panic("nfs_mountroot: SIOCAIFADDR: %d", error);
> +#endif
> +
> if ((cp = getenv("boot.netif.mtu")) != NULL) {
> ir.ifr_mtu = strtol(cp, NULL, 10);
> bcopy(nd->myif.ifra_name, ir.ifr_name, IFNAMSIZ);
>
--
Bjoern A. Zeeb What was I talking about and who are you again?
More information about the svn-src-all
mailing list