d_prune_aliases(): use a shrink list
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 3 Nov 2023 18:46:14 +0000 (14:46 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 25 Nov 2023 07:34:13 +0000 (02:34 -0500)
commitb4cc0734d25746d402db3baa6082d19109bca951
treeb704ddc51d71377992d42ec0c78d349be8e07769
parentf5c8a8a4b6c90f2160de6b580fa672b4afc15061
d_prune_aliases(): use a shrink list

Instead of dropping aliases one by one, restarting, etc., just
collect them into a shrink list and kill them off in one pass.

We don't really need the restarts - one alias can't pin another
(directory has only one alias, and couldn't be its own ancestor
anyway), so collecting everything that is not busy and taking it
out would take care of everything evictable that had been there
as we entered the function.  And new aliases added while we'd
been dropping old ones could just as easily have appeared right
as we return to caller...

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