svn commit: r197210 - in head/sys: netinet nfsclient

Rick Macklem rmacklem at uoguelph.ca
Tue Sep 15 23:19:08 UTC 2009



On Tue, 15 Sep 2009, Bjoern A. Zeeb wrote:

> 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.
>
I don't know diddly about diskless booting and have no setup to test,
but if I understood the problem, might something like the following
work?

rick
--- nfsclient/nfs_vfsops.c.sav	2009-09-15 18:39:32.000000000 -0400
+++ nfsclient/nfs_vfsops.c	2009-09-15 18:41:52.000000000 -0400
@@ -416,13 +416,14 @@
  	struct socket *so;
  	struct vnode *vp;
  	struct ifreq ir;
-	int error;
+	int error, doioctl = 1;
  	u_long l;
  	char buf[128];
  	char *cp;

  #if defined(BOOTP_NFSROOT) && defined(BOOTP)
  	bootpc_init();		/* use bootp to get nfs_diskless filled in */
+	doioctl = 0;
  #elif defined(NFS_ROOT)
  	nfs_setup_diskless();
  #endif
@@ -463,9 +464,11 @@
  			break;
  	}
  #endif
-	error = ifioctl(so, SIOCAIFADDR, (caddr_t)&nd->myif, td);
-	if (error)
-		panic("nfs_mountroot: SIOCAIFADDR: %d", error);
+	if (doioctl) {
+		error = ifioctl(so, SIOCAIFADDR, (caddr_t)&nd->myif, td);
+		if (error)
+			panic("nfs_mountroot: SIOCAIFADDR: %d", error);
+	}
  	if ((cp = getenv("boot.netif.mtu")) != NULL) {
  		ir.ifr_mtu = strtol(cp, NULL, 10);
  		bcopy(nd->myif.ifra_name, ir.ifr_name, IFNAMSIZ);


More information about the svn-src-head mailing list