How about moving the offending mntput calls off rpciod altogether? That way we can avoid both the deadlock with rpc_shutdown_client() and the deadlock with nfs_put_super(). The other advantage of doing this is that we move all those deadlocky little malloc() calls from the NFSv4 open(), close(), lock(), and locku() out of rpciod too. Ditto for the delegation return stuff that may result from the dput() calls...
The way I'm attempting to do this, is to add something like the following patch series (which has been compile tested, but not run-tested quite yet). It basically creates an 'nfsiod' workqueue, and allows the NFS read/write/... code to specify that the tk_ops->rpc_release() callback should be run on that particular workqueue. It then moves all the mntput()/dput() stuff into the rpc_release() call... Cheers Trond - To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html