]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/commit
[PATCH] Copy XFS readdir hack into nfsd code.
authorDavid Woodhouse <David.Woodhouse@intel.com>
Thu, 31 Jul 2008 19:29:12 +0000 (20:29 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 23 Oct 2008 09:13:05 +0000 (05:13 -0400)
commit14f7dd632011bb89c035722edd6ea0d90ca6b078
treed49a5fca0245eac9bd947aa200985d33267dfb19
parent2628b766363aa3791e816a7e5807373ef551c776
[PATCH] Copy XFS readdir hack into nfsd code.

Some file systems with their own internal locking have problems with the
way that nfsd calls the ->lookup() method from within a filldir function
called from their ->readdir() method. The recursion back into the file
system code can cause deadlock.

XFS has a fairly hackish solution to this which involves doing the
readdir() into a locally-allocated buffer, then going back through it
calling the filldir function afterwards. It's not ideal, but it works.

It's particularly suboptimal because XFS does this for local file
systems too, where it's completely unnecessary.

Copy this hack into the NFS code where it can be used only for NFS
export. In response to feedback, use it unconditionally rather than only
for the affected file systems.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/nfsd/vfs.c