From owner-freebsd-bugs Fri Apr 18 10:21:28 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id KAA19521 for bugs-outgoing; Fri, 18 Apr 1997 10:21:28 -0700 (PDT) Received: from dg-rtp.dg.com (dg-rtp.rtp.dg.com [128.222.1.2]) by freefall.freebsd.org (8.8.5/8.8.5) with SMTP id KAA19489 for ; Fri, 18 Apr 1997 10:21:07 -0700 (PDT) Received: by dg-rtp.dg.com (5.4R3.10/dg-rtp-v02) id AA21317; Fri, 18 Apr 1997 13:20:04 -0400 Received: from ponds by dg-rtp.dg.com.rtp.dg.com; Fri, 18 Apr 1997 13:20 EDT Received: from lakes.water.net (lakes [10.0.0.3]) by ponds.water.net (8.8.3/8.7.3) with ESMTP id MAA21301; Fri, 18 Apr 1997 12:45:03 -0400 (EDT) Received: (from rivers@localhost) by lakes.water.net (8.8.3/8.6.9) id MAA08022; Fri, 18 Apr 1997 12:51:42 -0400 (EDT) Date: Fri, 18 Apr 1997 12:51:42 -0400 (EDT) From: Thomas David Rivers Message-Id: <199704181651.MAA08022@lakes.water.net> To: ponds!labinfo.iet.unipi.it!luigi, ponds!lakes.water.net!rivers Subject: Re: kern/3304: NFS V2 readdir hangs Cc: ponds!freefall.freebsd.org!freebsd-bugs Content-Type: text Sender: owner-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk > > > > > Can someone (Dave ?) try the above fix and see if it works ? > > > > > > I'll give it a try later this morning (my time, EST ) and let you know. > > > > Ok - I've tried it out... > > > > I move the initialization of rep->r_mrep to be before the > > tryagain: label, just as the other initializations were... > > > > Unfortunately; I still experience the hang... > > well, ok. The fix above just serves to prevent a race when a request > arrives while nfs_request() proceeds down to sbwait(). > > I am looking into the problem to see what else may be happening > (presumably in the way up when requests are demultiplexed). > > > This problem seems to be particular to readdir() - I'm wondering if > > readdir() is somehow doing an soreceive() without going through nfs_reply(); > > i.e. avoiding the nfs_rcvlock() somehow... > > Can you put a printf() in nfs_receive (and nfs_reply() ) to see what's > going on ? Oh - you should see my messages file - there are now many printf()s scattered around giving me much information. As you may deduce from my recent mail; I've finally deciphered these printf()s to determine that nfs_lookup() is calling nfs_request() while the one from readdirrpc() is still being waited on... If others agree with my analysis, the question becomes what to do about it? - Dave Rivers -