get rid of trylock loop in locking dentries on shrink list
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 24 Feb 2018 02:54:18 +0000 (21:54 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 29 Mar 2018 19:07:02 +0000 (15:07 -0400)
commit3b3f09f48ba78c0634e929849860a6447d057eed
tree6f1ee9debc0343c409b2d6158e9f50c42127e8fe
parentc19457f0aed7fae73bb40e68ffcc72f36e3966a5
get rid of trylock loop in locking dentries on shrink list

In case of trylock failure don't re-add to the list - drop the locks
and carefully get them in the right order.  For shrink_dentry_list(),
somebody having grabbed a reference to dentry means that we can
kick it off-list, so if we find dentry being modified under us we
don't need to play silly buggers with retries anyway - off the list
it is.

The locking logics taken out into a helper of its own; lock_parent()
is no longer used for dentries that can be killed under us.

[fix from Eric Biggers folded]

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/dcache.c