diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2008-07-31 21:29:12 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-10-23 11:13:05 +0200 |
commit | 14f7dd632011bb89c035722edd6ea0d90ca6b078 (patch) | |
tree | d49a5fca0245eac9bd947aa200985d33267dfb19 /kernel/futex_compat.c | |
parent | [PATCH] Factor out nfsd_do_readdir() into its own function (diff) | |
download | linux-14f7dd632011bb89c035722edd6ea0d90ca6b078.tar.xz linux-14f7dd632011bb89c035722edd6ea0d90ca6b078.zip |
[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>
Diffstat (limited to 'kernel/futex_compat.c')
0 files changed, 0 insertions, 0 deletions