gfs2: fix glock shrinker ref issues
authorBob Peterson <rpeterso@redhat.com>
Tue, 12 Sep 2023 13:05:51 +0000 (08:05 -0500)
committerAndreas Gruenbacher <agruenba@redhat.com>
Mon, 18 Sep 2023 14:00:50 +0000 (16:00 +0200)
commit62862485a4c3a52029fc30f4bdde9af04afdafc9
treed31e512883f46d6a38c8953287ccd7911bd47ad2
parent52954b750958dcab9e44935f0c32643279091c85
gfs2: fix glock shrinker ref issues

Before this patch, function gfs2_scan_glock_lru would only try to free
glocks that had a reference count of 0. But if the reference count ever
got to 0, the glock should have already been freed.

Shrinker function gfs2_dispose_glock_lru checks whether glocks on the
LRU are demote_ok, and if so, tries to demote them. But that's only
possible if the reference count is at least 1.

This patch changes gfs2_scan_glock_lru so it will try to demote and/or
dispose of glocks that have a reference count of 1 and which are either
demotable, or are already unlocked.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/glock.c