Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Mar 2005 19:04:00 GMT
From:      Zach Metzinger <zmetzing@warthog.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/78953: smbfs getdirentries() failure causes CVS to fail
Message-ID:  <200503171904.j2HJ40qG023760@www.freebsd.org>
Resent-Message-ID: <200503171910.j2HJA2eA090556@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         78953
>Category:       kern
>Synopsis:       smbfs getdirentries() failure causes CVS to fail
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Mar 17 19:10:02 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Zach Metzinger
>Release:        FreeBSD 4.10-RELEASE #0
>Organization:
>Environment:
FreeBSD infidel 4.10-RELEASE FreeBSD 4.10-RELEASE #0: Thu Sep 16 12:24:40 CDT 2004     zmetzing@infidel:/usr/src/sys/compile/INFIDEL  i386
>Description:
      I had my CVSROOT pointing to a directory on an smbfs mounted share (detailed below). My CVS local working repository was on a traditional ufs filesystem. When I ran cvs update on a specific subdirectory of my local working directory, CVS complained that it could not access the directory in the repository. I failed to capture the exact error message from CVS, but I do have the truss(1) output:

open("/remotefs/software/scm/Matlab/work/gpib",0x4,027757771374) = 4 (0x4)
fstat(4,0xbfbff410)                              = 0 (0x0)
fcntl(0x4,0x2,0x1)                               = 0 (0x0)
__sysctl(0xbfbff2c8,0x2,0x282c5c20,0xbfbff2c4,0x0,0x0) = 0 (0x0)
fstatfs(0x4,0xbfbff310)                          = 0 (0x0)
getdirentries(0x4,0x80c8000,0x1000,0x80c08f4)    = 3960 (0xf78)
getdirentries(0x4,0x80c8000,0x1000,0x80c08f4)    = 3960 (0xf78)
getdirentries(0x4,0x80c8000,0x1000,0x80c08f4)    = 3960 (0xf78)
getdirentries(0x4,0x80c8000,0x1000,0x80c08f4)    = 1848 (0x738)
getdirentries(0x4,0x80c8000,0x1000,0x80c08f4)    ERR#9 'Bad file descriptor'
lseek(4,0x0,0)                                   = 0 (0x0)
close(4)                                         = 0 (0x0)

Comparing this to a getdirentries() call on a non-problem directory, it seems that the difference is the last getdirentries() call returning with an error instead of just a read of length 0 (signalling the end of directory information).

Mounted share from OS=[Windows Server 2003 3790] Server=[Windows Server 2003 5.2] as:
//SOMEUSER@SOMESERVER/SOFTWARE on /remotefs/software (smbfs)

I then used a MS Windows version of CVS to add a new file to this repository directory. Now the problem doesn't happen and getdirentries() returns as expected:

open("/remotefs/software/scm/Matlab/work/gpib",0x4,02640) = 5 (0x5)
fstat(5,0xbfbff410)                              = 0 (0x0)
fcntl(0x5,0x2,0x1)                               = 0 (0x0)
__sysctl(0xbfbff2c8,0x2,0x282c5c20,0xbfbff2c4,0x0,0x0) = 0 (0x0)
fstatfs(0x5,0xbfbff310)                          = 0 (0x0)
getdirentries(0x5,0x80c8000,0x1000,0x80cd5d4)    = 3960 (0xf78)
getdirentries(0x5,0x80c8000,0x1000,0x80cd5d4)    = 3960 (0xf78)
getdirentries(0x5,0x80c8000,0x1000,0x80cd5d4)    = 3960 (0xf78)
getdirentries(0x5,0x80c8000,0x1000,0x80cd5d4)    = 2112 (0x840)
getdirentries(0x5,0x80c8000,0x1000,0x80cd5d4)    = 0 (0x0)
lseek(5,0x0,0)                                   = 0 (0x0)
close(5)                                         = 0 (0x0)

I then removed the new file from the CVS directory and got the same non-failure results as above. I have packet captures from this session for the failure case. Send me email and I will forward the capture file.

>How-To-Repeat:
            Unknown.. Hasn't happened again. Possibly happens on NT directory sizes of (exactly or multiples of) 13728 with nbytes = 3960. 
>Fix:
            Possibly ignore flaky behavior from Windows 2003 file server at end-of-directory, or could be a problem with the request on the FBSD side.
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503171904.j2HJ40qG023760>