nfsd4: don't do lookup within readdir in recovery code
authorJ. Bruce Fields <bfields@citi.umich.edu>
Fri, 13 Mar 2009 20:02:59 +0000 (16:02 -0400)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Wed, 18 Mar 2009 21:38:40 +0000 (17:38 -0400)
commit05f4f678b0511a24795a017b5332455077be3b1c
treec646c8932bf7e78ff0960ade2f50cf43848d3bda
parenta1c8c4d1ff54c6c86930ee3c4c73c69eeb9ede61
nfsd4: don't do lookup within readdir in recovery code

The main nfsd code was recently modified to no longer do lookups from
withing the readdir callback, to avoid locking problems on certain
filesystems.

This (rather hacky, and overdue for replacement) NFSv4 recovery code has
the same problem.  Fix it to build up a list of names (instead of
dentries) and do the lookups afterwards.

Reported symptoms were a deadlock in the xfs code (called from
nfsd4_recdir_load), with /var/lib/nfs on xfs.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Reported-by: David Warren <warren@atmos.washington.edu>
fs/nfsd/nfs4recover.c