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

Reply via email to