[Cluster-devel] [GFS2 PATCH] GFS2: Don't waste time locking lru_lock for non-lru glocks

Steven Whitehouse swhiteho at redhat.com
Wed Jul 26 16:11:59 UTC 2017


Hi,

Looks good.

Acked-by: Steven Whitehouse <swhiteho at redhat.com>

Steve.


On 26/07/17 17:10, Bob Peterson wrote:
> Hi,
>
> 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, thus reducing lru_lock contention.
>
> Signed-off-by: Bob Peterson <rpeterso at redhat.com>
> ---
> 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);
>




More information about the Cluster-devel mailing list