From owner-freebsd-net@FreeBSD.ORG Sat Aug 27 12:23:25 2011 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3982F106566C for ; Sat, 27 Aug 2011 12:23:25 +0000 (UTC) (envelope-from rmacklem@uoguelph.ca) Received: from esa-annu.mail.uoguelph.ca (esa-annu.mail.uoguelph.ca [131.104.91.36]) by mx1.freebsd.org (Postfix) with ESMTP id EBDA48FC1B for ; Sat, 27 Aug 2011 12:23:24 +0000 (UTC) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ap8EAIzgWE6DaFvO/2dsb2JhbABChEykVIFAAQEBAQIBAQEBIAQnIAsFFhgCAg0ZAikBCSYGCAcEARwEh1EEqD+RFYEshA+BEQSRDoIRkSA X-IronPort-AV: E=Sophos;i="4.68,289,1312171200"; d="scan'208";a="132428170" Received: from erie.cs.uoguelph.ca (HELO zcs3.mail.uoguelph.ca) ([131.104.91.206]) by esa-annu-pri.mail.uoguelph.ca with ESMTP; 27 Aug 2011 08:23:23 -0400 Received: from zcs3.mail.uoguelph.ca (localhost.localdomain [127.0.0.1]) by zcs3.mail.uoguelph.ca (Postfix) with ESMTP id EBE84B3F0F; Sat, 27 Aug 2011 08:23:23 -0400 (EDT) Date: Sat, 27 Aug 2011 08:23:23 -0400 (EDT) From: Rick Macklem To: Martin Birgmeier Message-ID: <915518840.435132.1314447803952.JavaMail.root@erie.cs.uoguelph.ca> In-Reply-To: <4E58B30A.6000001@aon.at> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [172.17.91.201] X-Mailer: Zimbra 6.0.10_GA_2692 (ZimbraWebClient - FF3.0 (Win)/6.0.10_GA_2692) Cc: freebsd-net@freebsd.org Subject: Re: amd + NFS reconnect = ICMP storm + unkillable process. X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Aug 2011 12:23:25 -0000 Martin Birgmeier wrote: > Thank you for these patches. > > One interesting thing: I was trying to backport them to 7.4.0 and > RELENG_7, too, but there the portion of the code dealing with the > RPC_CANTSEND case does not exist. On the other hand, the problem > surfaced (for me) when upgrading from 7.4 to 8.2. So could one > probably > conclude that it is more the write case which leads to the erroneous > behavior? > Well, the kernel rpc code isn't used by NFS in FreeBSD7.n. The only thing that uses it in FreeBSD7.n is the NLM (Network Lock Manager). As such, I don't think the patch is critical for FreeBSD7.n, rick > Regards, > > Martin > > On 08/26/11 21:19, Artem Belevich wrote: > > On Fri, Aug 26, 2011 at 12:04 PM, Rick Macklem > > 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 > >> kernel 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 2011-08-26 14:44:27.000000000 -0400 > >> +++ rpc/clnt_dg.c 2011-08-26 14:48:07.000000000 -0400 > >> @@ -467,7 +467,10 @@ send_again: > >> cu->cu_waitflag, "rpccwnd", 0); > >> if (error) { > >> errp->re_errno = error; > >> - errp->re_status = stat = RPC_CANTSEND; > >> + if (error == EINTR || error == ERESTART) > >> + errp->re_status = stat = RPC_INTR; > >> + else > >> + errp->re_status = stat = RPC_CANTSEND; > >> goto out; > >> } > >> } > > You're right. I'll add the change to the commit. > > > > --Artem > > > >> @@ -636,7 +639,7 @@ get_reply: > >> */ > >> if (error != EWOULDBLOCK) { > >> errp->re_errno = error; > >> - if (error == EINTR) > >> + if (error == EINTR || error == ERESTART) > >> errp->re_status = stat = RPC_INTR; > >> else > >> errp->re_status = stat = > >> RPC_CANTRECV; > >> > >> > > _______________________________________________ > > freebsd-net@freebsd.org mailing list > > http://lists.freebsd.org/mailman/listinfo/freebsd-net > > To unsubscribe, send any mail to > > "freebsd-net-unsubscribe@freebsd.org" > > > > > > > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"