Issue for list directory contains large number files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

When I mounted NFS client to a FUSE filesystem in Linux, it took hours
to list a directory contains 100 K files. There are following two
issues:

(1) The readdir returns all file names and file attributes to NFS, but
despite NFS got the file attributes, it still called getattr for each
file. Is there any mount option can suppress those getattrs during
listing directory call?

(2) If a directory contains files smaller than 25, the NFS called only
one readdir, a normal scenario. When a directory contains files larger
than 25, NFS called multiple readdirs. In fact, between 25 getattrs,
NFS called another readdir. Every readdir returned NFS the same
directory content with all file names and file attributes in that
directory. Not clear if the 25 is a magic number or if 25 is just
coincident associated to entries, file size, or timing?

If a directory contains 100 K files, NFS called thousands getdirs.
Each getdir returned NFS the same 100 K file names and file
attributes. A wired situation where the NFS should only need one
getdir to list the directory contents on screen, is it correct?

To make sure those problems were not caused from FUSE, I've tried to
list a directory which contains 100 K files directly from FUSE mount
point (No NFS client), it indeed only called readdir once, and there
was no single getattr called after the readdir, a normal behaviour you
can imagine.

Appreciate any explanations and suggestions of how to resolve this
issue (mount options?).

Thank you.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux