From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH] gfs2: skip dlm_unlock calls in unmount
Date: Wed, 14 Nov 2012 10:38:11 +0000 [thread overview]
Message-ID: <1352889491.2747.0.camel@menhir> (raw)
In-Reply-To: <20121113155856.GA8576@redhat.com>
Hi,
Now pushed to the -nmw git tree. Thanks,
Steve.
On Tue, 2012-11-13 at 10:58 -0500, David Teigland wrote:
> When unmounting, gfs2 does a full dlm_unlock operation on every
> cached lock. This can create a very large amount of work and can
> take a long time to complete. However, the vast majority of these
> dlm unlock operations are unnecessary because after all the unlocks
> are done, gfs2 leaves the dlm lockspace, which automatically clears
> the locks of the leaving node, without unlocking each one individually.
> So, gfs2 can skip explicit dlm unlocks, and use dlm_release_lockspace to
> remove the locks implicitly. The one exception is when the lock's lvb is
> being used. In this case, dlm_unlock is called because it may update the
> lvb of the resource.
>
> Signed-off-by: David Teigland <teigland@redhat.com>
> ---
> fs/gfs2/glock.c | 1 +
> fs/gfs2/incore.h | 1 +
> fs/gfs2/lock_dlm.c | 8 ++++++++
> 3 files changed, 10 insertions(+)
>
> diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
> index e6c2fd5..f3a5edb 100644
> --- a/fs/gfs2/glock.c
> +++ b/fs/gfs2/glock.c
> @@ -1528,6 +1528,7 @@ static void dump_glock_func(struct gfs2_glock *gl)
>
> void gfs2_gl_hash_clear(struct gfs2_sbd *sdp)
> {
> + set_bit(SDF_SKIP_DLM_UNLOCK, &sdp->sd_flags);
> glock_hash_walk(clear_glock, sdp);
> flush_workqueue(glock_workqueue);
> wait_event(sdp->sd_glock_wait, atomic_read(&sdp->sd_glock_disposal) == 0);
> diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
> index 3d469d3..67a39cf 100644
> --- a/fs/gfs2/incore.h
> +++ b/fs/gfs2/incore.h
> @@ -539,6 +539,7 @@ enum {
> SDF_DEMOTE = 5,
> SDF_NOJOURNALID = 6,
> SDF_RORECOVERY = 7, /* read only recovery */
> + SDF_SKIP_DLM_UNLOCK = 8,
> };
>
> #define GFS2_FSNAME_LEN 256
> diff --git a/fs/gfs2/lock_dlm.c b/fs/gfs2/lock_dlm.c
> index 0fb6539..f6504d3 100644
> --- a/fs/gfs2/lock_dlm.c
> +++ b/fs/gfs2/lock_dlm.c
> @@ -289,6 +289,14 @@ static void gdlm_put_lock(struct gfs2_glock *gl)
> gfs2_glstats_inc(gl, GFS2_LKS_DCOUNT);
> gfs2_sbstats_inc(gl, GFS2_LKS_DCOUNT);
> gfs2_update_request_times(gl);
> +
> + /* don't want to skip dlm_unlock writing the lvb when lock is ex */
> + if (test_bit(SDF_SKIP_DLM_UNLOCK, &sdp->sd_flags) &&
> + gl->gl_state != LM_ST_EXCLUSIVE) {
> + gfs2_glock_free(gl);
> + return;
> + }
> +
> error = dlm_unlock(ls->ls_dlm, gl->gl_lksb.sb_lkid, DLM_LKF_VALBLK,
> NULL, gl);
> if (error) {
next prev parent reply other threads:[~2012-11-14 10:38 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-07 19:14 [Cluster-devel] gfs2: skip dlm_unlock calls in unmount David Teigland
2012-11-08 10:26 ` Steven Whitehouse
2012-11-08 15:41 ` David Teigland
2012-11-08 18:48 ` Steven Whitehouse
2012-11-08 19:59 ` David Teigland
2012-11-08 21:34 ` [Cluster-devel] [PATCH] " David Teigland
2012-11-09 9:45 ` Steven Whitehouse
2012-11-09 15:30 ` David Teigland
2012-11-12 10:44 ` Steven Whitehouse
2012-11-12 15:46 ` David Teigland
2012-11-13 15:58 ` David Teigland
2012-11-14 10:38 ` Steven Whitehouse [this message]
2012-11-09 14:55 ` [Cluster-devel] " Steven Whitehouse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1352889491.2747.0.camel@menhir \
--to=swhiteho@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.