From nobody@FreeBSD.ORG Mon May  3 14:23:47 1999
Return-Path: <nobody@FreeBSD.ORG>
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id 332E614C2B; Mon,  3 May 1999 14:23:47 -0700 (PDT)
Message-Id: <19990503212347.332E614C2B@hub.freebsd.org>
Date: Mon,  3 May 1999 14:23:47 -0700 (PDT)
From: jso@research.att.com
Sender: nobody@FreeBSD.ORG
To: freebsd-gnats-submit@freebsd.org
Subject: V3 NFS problem
X-Send-Pr-Version: www-1.0

>Number:         11470
>Category:       kern
>Synopsis:       V3 NFS problem
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    dillon
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon May  3 14:30:00 PDT 1999
>Closed-Date:    Tue Dec 14 21:37:19 PST 1999
>Last-Modified:  Tue Dec 14 21:38:14 PST 1999
>Originator:     Jerry So
>Release:        3.1
>Organization:
AT&T Labs-Research
>Environment:
FreeBSD spaceless 3.1-RELEASE FreeBSD 3.1-RELEASE #0: Tue Apr 20 17:57:03 EDT 1999     root@spaceless:/usr/src/sys/compile/SPACELESS  i386

>Description:
NFS client is solaris 2.6 or irix 6.4
NFS server is freebsd 3.1

For example:
When doing a rm -Rf gcc-2.8.1 on NFS client
rm: Unable to remove directory gcc-2.8.1/config/i386: File exists
rm: Unable to remove directory gcc-2.8.1/config/m68k: File exists
rm: Unable to remove directory gcc-2.8.1/config: File exists
rm: Unable to remove directory gcc-2.8.1: File exists

resulted.

Only NFS v3 is having problem. Machines with V2 is OK.

>How-To-Repeat:

Repeat any time
>Fix:


>Release-Note:
>Audit-Trail:

From: Petr Lampa <lampa@fee.vutbr.cz>
To: freebsd-gnats-submit@freebsd.org, jso@research.att.com
Cc:  
Subject: Re: kern/11470: V3 NFS problem
Date: Wed, 11 Aug 1999 21:01:18 +0200

 The problem is in stale cookie. The rm -r command reads several
 directory
 entries using readdirplus, calls remove3 for these entries and
 then continue reading the directory with saved cookie.
 On the Solaris NFSv3 server continuation returns the next entries
 from modified directory, but FreeBSD report stale coookie and
 reading of the directory ends. So if any directory contains
 more then BUFSIZ/sizeo(entry) entries (or something like that),
 then rm -r fails. Here is snoop from Solaris client (adela) removing
 files from FreeBSD server (kazi):
 
 adela.dcse.fee.vutbr.cz -> kazi.dcse.fee.vutbr.cz NFS C ACCESS3
 FH=A448read (read)
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz NFS R ACCESS3 OK
 (read)
 adela.dcse.fee.vutbr.cz -> kazi.dcse.fee.vutbr.cz NFS C ACCESS3
 FH=A448lookup (lookup)
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz NFS R ACCESS3 OK
 (lookup)
 adela.dcse.fee.vutbr.cz -> kazi.dcse.fee.vutbr.cz NFS C READDIRPLUS3
 FH=A448 Cookie=0 for 1048/8192
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz NFS R READDIRPLUS3 OK
 2 entries (More)
 adela.dcse.fee.vutbr.cz -> kazi.dcse.fee.vutbr.cz NFS C READDIRPLUS3
 FH=A448 Cookie=512 for 1048/8192
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz NFS R READDIRPLUS3 OK
 10+ entries (incomplete)
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz UDP continuation
 ID=1633
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz UDP continuation
 ID=1633
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz UDP continuation
 ID=1633
 adela.dcse.fee.vutbr.cz -> kazi.dcse.fee.vutbr.cz NFS C READDIRPLUS3
 FH=A448 Cookie=2764 for 1048/8192
 adela.dcse.fee.vutbr.cz -> kazi.dcse.fee.vutbr.cz NFS C ACCESS3
 FH=C54Fmodify,extend (modify,extend)
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz NFS R ACCESS3 OK
 (modify,extend)
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz NFS R READDIRPLUS3 OK
 9+ entries (incomplete)
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz UDP continuation
 ID=1635
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz UDP continuation
 ID=1635
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz UDP continuation
 ID=1635
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz UDP continuation
 ID=1635
 adela.dcse.fee.vutbr.cz -> kazi.dcse.fee.vutbr.cz NFS C REMOVE3 FH=A448
 mpq_get_den.o
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz NFS R REMOVE3 OK
 ... more REMOVE3
 
 adela.dcse.fee.vutbr.cz -> kazi.dcse.fee.vutbr.cz NFS C REMOVE3 FH=A448
 mpz_com.o
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz NFS R REMOVE3 OK
 adela.dcse.fee.vutbr.cz -> kazi.dcse.fee.vutbr.cz NFS C READDIRPLUS3
 FH=A448 Cookie=2764 for 1048/8192
 kazi.dcse.fee.vutbr.cz -> adela.dcse.fee.vutbr.cz NFS R READDIRPLUS3
 Readdir cookie is stale
 
 This is bug - readdirplus should continue, remove doesn't change the
 size of directory
 (or does?).
 
 									Petr Lampa
 
State-Changed-From-To: open->analyzed 
State-Changed-By: dillon 
State-Changed-When: Wed Sep 29 10:17:54 PDT 1999 
State-Changed-Why:  
A bug fix for what we believe is causing this problem is under test in 
CURRENT and will be backported to STABLE if it proves effacious.  I'll 
close the PR after the change is backported to stable. 


Responsible-Changed-From-To: freebsd-bugs->dillon 
Responsible-Changed-By: dillon 
Responsible-Changed-When: Wed Sep 29 10:17:54 PDT 1999 
Responsible-Changed-Why:  
Reassigned to NFS maintainer 
State-Changed-From-To: analyzed->closed 
State-Changed-By: dillon 
State-Changed-When: Tue Dec 14 21:37:19 PST 1999 
State-Changed-Why:  
The bug fix has been current a while and seems to have solved the problem, 
and has just now been MFC'd to stable for the 3.4 release so I'm closing 
the PR! 
>Unformatted:
