Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Sep 2009 16:03:58 -0700
From:      Qing Li <qingli@freebsd.org>
To:        Rick Macklem <rmacklem@uoguelph.ca>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, "Bjoern A. Zeeb" <bz@freebsd.org>, src-committers@freebsd.org
Subject:   Re: svn commit: r197210 - in head/sys: netinet nfsclient
Message-ID:  <9ace436c0909151603m91831fat143f14855f036a1@mail.gmail.com>
In-Reply-To: <Pine.GSO.4.63.0909151853200.23388@muncher.cs.uoguelph.ca>
References:  <200909150101.n8F113sU071311@svn.freebsd.org> <20090915150034.U68375@maildrop.int.zabbadoz.net> <Pine.GSO.4.63.0909151853200.23388@muncher.cs.uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
The users who were reporting the NFS mount problems confirm the patch fixes
their issues. At the moment I don't know why the patch would break NFS ROOT=
.
I just backed out the change so RC1 can be made but I will continue the
investigation.

--Qing

On Tue, Sep 15, 2009 at 3:55 PM, Rick Macklem <rmacklem@uoguelph.ca> wrote:
>
>
> 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:
>>> =A0The bootp code installs an interface address and the nfs client
>>> =A0module tries to install the same address again. This extra code
>>> =A0is removed, which was discovered by the removal of a call to
>>> =A0in_ifscrub() in r196714. This call to in_ifscrub is put back here
>>> =A0because the SIOCAIFADDR command can be used to change the prefix
>>> =A0length of an existing alias.
>>>
>>> =A0Reviewed by: =A0 =A0kmacy
>>
>> 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 =A02009-09-15 18:39:32.000000000 -0400
> +++ nfsclient/nfs_vfsops.c =A0 =A0 =A02009-09-15 18:41:52.000000000 -0400
> @@ -416,13 +416,14 @@
> =A0 =A0 =A0 =A0struct socket *so;
> =A0 =A0 =A0 =A0struct vnode *vp;
> =A0 =A0 =A0 =A0struct ifreq ir;
> - =A0 =A0 =A0 int error;
> + =A0 =A0 =A0 int error, doioctl =3D 1;
> =A0 =A0 =A0 =A0u_long l;
> =A0 =A0 =A0 =A0char buf[128];
> =A0 =A0 =A0 =A0char *cp;
>
> =A0#if defined(BOOTP_NFSROOT) && defined(BOOTP)
> =A0 =A0 =A0 =A0bootpc_init(); =A0 =A0 =A0 =A0 =A0/* use bootp to get nfs_=
diskless filled in */
> + =A0 =A0 =A0 doioctl =3D 0;
> =A0#elif defined(NFS_ROOT)
> =A0 =A0 =A0 =A0nfs_setup_diskless();
> =A0#endif
> @@ -463,9 +464,11 @@
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break;
> =A0 =A0 =A0 =A0}
> =A0#endif
> - =A0 =A0 =A0 error =3D ifioctl(so, SIOCAIFADDR, (caddr_t)&nd->myif, td);
> - =A0 =A0 =A0 if (error)
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 panic("nfs_mountroot: SIOCAIFADDR: %d", err=
or);
> + =A0 =A0 =A0 if (doioctl) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 error =3D ifioctl(so, SIOCAIFADDR, (caddr_t=
)&nd->myif, td);
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (error)
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 panic("nfs_mountroot: SIOCA=
IFADDR: %d", error);
> + =A0 =A0 =A0 }
> =A0 =A0 =A0 =A0if ((cp =3D getenv("boot.netif.mtu")) !=3D NULL) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0ir.ifr_mtu =3D strtol(cp, NULL, 10);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0bcopy(nd->myif.ifra_name, ir.ifr_name, IFN=
AMSIZ);
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9ace436c0909151603m91831fat143f14855f036a1>