This is the mail archive of the glibc-bugs@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/353] New: getdents64 loops with Apple NFS


Hi,

We're using an Xserve with RAID and OSX Server 10.3.5 as NFS server
for our mixed Solaris 8/9 and SuSE Linux 9.0 environment.

OS versions: 

Darwin nfs-server.example.com 7.5.0 Darwin Kernel Version 7.5.0: Thu Aug  5
19:26:16 PDT 2004; root:xnu/xnu-517.7.21.obj~3/RELEASE_PPC  Power Macintosh powerpc

Linux nfs-client.example.com 2.4.21-192-smp4G #1 SMP Wed Feb 18
19:27:48 UTC 2004 i686 i686 i386 GNU/Linux

The shares on the Xserve are mounted on the Linux client via NFS using
automount. The problems we have discovered are only when mounting from
the Xserve and not other NetApp, Solaris and Linux NFS servers. The
problems also exist on older SuSE releases and on RedHat 9.

1) In some directories ls -lR hangs forever. This is reproduceable but
not always in the same directory from the same Linux client. A strace
on the hanging ls process shows an endless loop with the system calls:
getdents64(), lstat64() and getxattr().

2) Sometimes a tar on a NFS share takes very long, grows in memory and
CPU usage and then aborts with the error message "memory exhausted". A
strace on the running tar process shows an endless loop with the
system call getdents64().

Sample strace on ls output:

getdents64(5, /* 3 entries */, 4096)    = 128
lstat64("/share/dir/file1.txt", {st_mode=S_IFREG|0444, st_size=8550,
...}) = 0
getxattr("/share/dir/file1.txt", "system.posix_acl_access", (nil), 0)
= -1 EOPNOTSUPP (Operation not supported)
lstat64("/share/dir/file2.txt", {st_mode=S_IFREG|0444, st_size=6570,
...}) = 0
getxattr("/share/dir/file2.txt", "system.posix_acl_access", (nil), 0)
= -1 EOPNOTSUPP (Operation not supported)
lstat64("/share/dir/file3.txt", {st_mode=S_IFREG|0444, st_size=23411,
...}) = 0
getxattr("/share/dir/file3.txt", "system.posix_acl_access", (nil), 0)
= -1 EOPNOTSUPP (Operation not supported)

3) NFSv2 has a 2GB file size limit for reading/writing files. NFSv3
does not have that limit. Files larger thant 2GB appear in an ls
smaller than they are (original size modulo 2GB).

Problems 1) and 2) occur both on NFSv2 and NFSv3, mounted with TCP and
UDP. A temporary workaround is to create an additional file in the
directory where ls hangs.

The same error occurs on other Linux distributions.

See also bug reports on:

http://sourceforge.net/tracker/index.php?func=detail&aid=964204&group_id=14&atid=100014
http://discussions.info.apple.com/webx?13@178.cdZnadQmv3a.9@.689495bc/0

Thanks in advance for fixing.

Regards,
Bernd

-- 
           Summary: getdents64 loops with Apple NFS
           Product: glibc
           Version: 2.3.2
            Status: NEW
          Severity: normal
          Priority: P2
         Component: libc
        AssignedTo: gotom at debian dot or dot jp
        ReportedBy: bnies at bluewin dot ch
                CC: glibc-bugs at sources dot redhat dot com


http://sources.redhat.com/bugzilla/show_bug.cgi?id=353

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]