On Mon, Dec 11, 2023 at 11:13:30PM +0000, Al Viro wrote: > dentry_kill() means ->d_release(), ->d_iput() and anything final iput() > could do. Including e.g. anything that might be done by afs_silly_iput(), > with its "send REMOVE to server, wait for completion". No, that's not > a deadlock per se, but it can stall you a bit more than you would > probably consider tolerable... Sure, you could argue that AFS ought to > make that thing asynchronous, but... > > Anyway, it won't be "safe to use in most contexts". ->mmap_lock alone > is enough for that, and that's just the one I remember to have given > us a lot of headache. And that's without bringing the "nfsd won't > touch those files" cases - make it generally accessible and you get > to audit all locks that might be taken when we close a socket, etc. PS: put it that way - I can buy "nfsd is doing that only to regular files and not on an arbitrary filesystem, at that; having the thread wait on that sucker is not going to cause too much trouble"; I do *not* buy turning it into a thing usable outside of a very narrow set of circumstances.