Date: Fri, 26 Aug 2011 12:19:04 -0700 From: Artem Belevich <art@freebsd.org> To: Rick Macklem <rmacklem@uoguelph.ca> Cc: freebsd-net@freebsd.org, Martin Birgmeier <la5lbtyi@aon.at> Subject: Re: amd + NFS reconnect = ICMP storm + unkillable process. Message-ID: <CAFqOu6hn-nhPjkNbvQ25yhL=AaNzqR4cGCA0EUHh8WGsnXpyAQ@mail.gmail.com> In-Reply-To: <2062808982.416174.1314385483626.JavaMail.root@erie.cs.uoguelph.ca> References: <CAFqOu6huO2gOs-3b1zvYkFb6RVFiRhLPDA-=4OA4-Hxt5FpHjw@mail.gmail.com> <2062808982.416174.1314385483626.JavaMail.root@erie.cs.uoguelph.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Aug 26, 2011 at 12:04 PM, Rick Macklem <rmacklem@uoguelph.ca> wrote= : > The patch looks good to me. The only thing is that *maybe* it should > also do the same for the other msleep() higher up in clnt_dg_call()? > (It seems to me that if this msleep() were to return ERESTART, the same > =A0kernel loop would occur.) > > Here's this variant of the patch (I'll let you decide which to commit). > > Good work tracking this down, rick > > --- rpc/clnt_dg.c.sav =A0 2011-08-26 14:44:27.000000000 -0400 > +++ rpc/clnt_dg.c =A0 =A0 =A0 2011-08-26 14:48:07.000000000 -0400 > @@ -467,7 +467,10 @@ send_again: > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0cu->cu_waitflag, "rpccwnd", 0); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (error) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errp->re_errno =3D error; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 errp->re_status =3D stat = =3D RPC_CANTSEND; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (error =3D=3D EINTR || e= rror =3D=3D ERESTART) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 errp->re_st= atus =3D stat =3D RPC_INTR; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 else > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 errp->re_st= atus =3D stat =3D RPC_CANTSEND; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0goto out; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > =A0 =A0 =A0 =A0} You're right. I'll add the change to the commit. --Artem > @@ -636,7 +639,7 @@ get_reply: > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 */ > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (error !=3D EWOULDBLOCK) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errp->re_errno =3D error; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (error =3D=3D EINTR) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (error =3D=3D EINTR || e= rror =3D=3D ERESTART) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errp->re_s= tatus =3D stat =3D RPC_INTR; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0else > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errp->re_s= tatus =3D stat =3D RPC_CANTRECV; > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFqOu6hn-nhPjkNbvQ25yhL=AaNzqR4cGCA0EUHh8WGsnXpyAQ>