From: Bob Peterson Date: Wed, 26 Jul 2017 15:57:35 +0000 (-0500) Subject: GFS2: Don't waste time locking lru_lock for non-lru glocks X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=645ebd49f0583f91234aa043ef71ddebe7e8351e;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git GFS2: Don't waste time locking lru_lock for non-lru glocks Before this patch, glock_dq would call gfs2_glock_remove_from_lru. For glocks that are never put on the LRU, such as the transaction glock, this just takes the spin_lock, determines there's nothing to be done because the list is empty, then unlocks again. This was causing unnecessary lock contention on the lru_lock spin_lock. This patch adds a check for GLOF_LRU in the glops before taking the spin_lock. Signed-off-by: Bob Peterson --- diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index c38ab6c81898..1029340fc8ba 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c @@ -150,6 +150,9 @@ void gfs2_glock_add_to_lru(struct gfs2_glock *gl) static void gfs2_glock_remove_from_lru(struct gfs2_glock *gl) { + if (!(gl->gl_ops->go_flags & GLOF_LRU)) + return; + spin_lock(&lru_lock); if (!list_empty(&gl->gl_lru)) { list_del_init(&gl->gl_lru);