From owner-freebsd-net@FreeBSD.ORG Fri Aug 26 19:19:05 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 CDBEF1065670 for ; Fri, 26 Aug 2011 19:19:05 +0000 (UTC) (envelope-from artemb@gmail.com) Received: from mail-gw0-f54.google.com (mail-gw0-f54.google.com [74.125.83.54]) by mx1.freebsd.org (Postfix) with ESMTP id 8C22B8FC17 for ; Fri, 26 Aug 2011 19:19:05 +0000 (UTC) Received: by gwb15 with SMTP id 15so3761366gwb.13 for ; Fri, 26 Aug 2011 12:19:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=SfYpkcN8DeGRVG0TB8lfKTQxFsJAW87YFAfSI+xxr+4=; b=GZTgdMbLBtglYa7KmKqh7JSkyfP3wgrzHCUnyHbGNY0w4zMrKf6528gse4vWVbXpGQ 0VaJCTSbtFdT7U+Nq6oR/JfiUzm3JmM3Cc4GxaPdIyWFRWj2oS8ObbQqpCE7w6ERYy77 GN8ZWl4gHgiVCgbyF1tNsnAgWM/c2GJkPi/WQ= MIME-Version: 1.0 Received: by 10.236.173.131 with SMTP id v3mr9071437yhl.112.1314386344634; Fri, 26 Aug 2011 12:19:04 -0700 (PDT) Sender: artemb@gmail.com Received: by 10.236.102.147 with HTTP; Fri, 26 Aug 2011 12:19:04 -0700 (PDT) In-Reply-To: <2062808982.416174.1314385483626.JavaMail.root@erie.cs.uoguelph.ca> References: <2062808982.416174.1314385483626.JavaMail.root@erie.cs.uoguelph.ca> Date: Fri, 26 Aug 2011 12:19:04 -0700 X-Google-Sender-Auth: fA10eb0yV04Tyj1ydXGWqpjhLU8 Message-ID: From: Artem Belevich To: Rick Macklem Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-net@freebsd.org, Martin Birgmeier 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: Fri, 26 Aug 2011 19:19:05 -0000 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 > =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; > >