Red Hat Bugzilla – Bug 43820
getdents64 doesn't work on nfs remote mounted fs in java jar program.
Last modified: 2007-04-18 12:33:36 EDT
From Bugzilla Helper:
User-Agent: Mozilla/4.5 [en] (X11; I; IRIX 6.2 IP22)
Description of problem:
I discovered that the java jar utililty (sun's jdk1.2.2, and IBM's java 1.3
sdk) doesn't work in some situations:
"jar cvf file.jar dirRoot" only puts dirRoot into the .jar file and not all
the files in dirRoot's subdirectories,
but only in the case of beeing on some remote mounted nfs filesystems (on a
RedHat 7.0 for ex.,
also on SGI IRIX machines).
Steps to Reproduce:
1.mount or automount a filesystem from a not RedHat 7.1 host
2.cd to a directory located on the remote fs.
3.do "jar cvf afile.jar adirWithSubdirs"
Actual Results: the .jar file will only contain the topdirectory and not
all the subdirs and files
Expected Results: the .jar file sould contain the complete tree of dirs
and files under the topdirectory given as last arg.
It works fine if the remote mounted nfs filesystem is on a RedHat 7.1
Using strace, I found out that on RedHat 7.1 the jar program uses ....64()
file functions, on RedHat 7.0, it defaults to NOT_64() functions after the
first call to stat64() has returned ENOSYS (Function not implemented) and
works fine by diving into the directory tree
this same bug affects java.io.File::list().
The following fails to list all files on an SGI 6.5 kernel mounted by 2.4.9-smp
public class ls
public static void main(String theArgs)
System.out.println("Java ls of ["+theArgs+"]");
File aDir = new File(theArgs);
String aList = aDir.list();
for(int c=0; c<aList.length; c++)
Several NFS implementations are buggy. You probably run into one of
these. Get a better NFS server.