]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commit322412f1d935a4e7a91151cdbf06d35e0890c26f
tree6f1ee9debc0343c409b2d6158e9f50c42127e8fe
parent6790492a8343eb3101653ff6b6b08e369d27e38e
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