From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bob Peterson Date: Tue, 1 Jun 2021 11:02:00 -0400 (EDT) Subject: [Cluster-devel] [gfs2 PATCH] gfs2: Eliminate go_xmote_bh in favor of go_lock In-Reply-To: <727604443.34917802.1622559718942.JavaMail.zimbra@redhat.com> Message-ID: <84089438.34917857.1622559720532.JavaMail.zimbra@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Before this patch, the freeze glock was the only glock to use the go_xmote_bh glock op (glop). The go_xmote_bh glop is done when a glock is locked. But so is go_lock. This patch eliminates the glop altogether in favor of just using go_lock for the freeze glock. This is for better consistency, readability, etc. I also fixed a misleading comment in do_promote. Signed-off-by: Bob Peterson --- fs/gfs2/glock.c | 12 +----------- fs/gfs2/glops.c | 7 ++++--- fs/gfs2/incore.h | 1 - 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index f6cae2ee1c83..ffd0dea0f44e 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c @@ -385,7 +385,7 @@ static void do_error(struct gfs2_glock *gl, const int ret) * do_promote - promote as many requests as possible on the current queue * @gl: The glock * - * Returns: 1 if there is a blocked holder at the head of the list, or 2 + * Returns: 1 if there is a blocked waiter at the head of the list, or 2 * if a type specific operation is underway. */ @@ -505,7 +505,6 @@ static void gfs2_demote_wake(struct gfs2_glock *gl) static void finish_xmote(struct gfs2_glock *gl, unsigned int ret) { - const struct gfs2_glock_operations *glops = gl->gl_ops; struct gfs2_holder *gh; unsigned state = ret & LM_OUT_ST_MASK; int rv; @@ -563,15 +562,6 @@ static void finish_xmote(struct gfs2_glock *gl, unsigned int ret) if (test_and_clear_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags)) gfs2_demote_wake(gl); if (state != LM_ST_UNLOCKED) { - if (glops->go_xmote_bh) { - spin_unlock(&gl->gl_lockref.lock); - rv = glops->go_xmote_bh(gl); - spin_lock(&gl->gl_lockref.lock); - if (rv) { - do_error(gl, rv); - goto out; - } - } rv = do_promote(gl); if (rv == 2) goto out_locked; diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c index 4939308d54f3..9f3b68806376 100644 --- a/fs/gfs2/glops.c +++ b/fs/gfs2/glops.c @@ -595,11 +595,12 @@ static int freeze_go_sync(struct gfs2_glock *gl) } /** - * freeze_go_xmote_bh - After promoting/demoting the freeze glock + * freeze_go_lock - After promoting/demoting the freeze glock * @gl: the glock */ -static int freeze_go_xmote_bh(struct gfs2_glock *gl) +static int freeze_go_lock(struct gfs2_holder *gh) { + struct gfs2_glock *gl = gh->gh_gl; struct gfs2_sbd *sdp = gl->gl_name.ln_sbd; struct gfs2_inode *ip = GFS2_I(sdp->sd_jdesc->jd_inode); struct gfs2_glock *j_gl = ip->i_gl; @@ -759,7 +760,7 @@ const struct gfs2_glock_operations gfs2_rgrp_glops = { const struct gfs2_glock_operations gfs2_freeze_glops = { .go_sync = freeze_go_sync, - .go_xmote_bh = freeze_go_xmote_bh, + .go_lock = freeze_go_lock, .go_demote_ok = freeze_go_demote_ok, .go_type = LM_TYPE_NONDISK, .go_flags = GLOF_NONDISK, diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h index e32433df119c..ff7ae651b9d8 100644 --- a/fs/gfs2/incore.h +++ b/fs/gfs2/incore.h @@ -217,7 +217,6 @@ struct lm_lockname { struct gfs2_glock_operations { int (*go_sync) (struct gfs2_glock *gl); - int (*go_xmote_bh)(struct gfs2_glock *gl); void (*go_inval) (struct gfs2_glock *gl, int flags); int (*go_demote_ok) (const struct gfs2_glock *gl); int (*go_lock) (struct gfs2_holder *gh);