| From 9a78f0eaa031cdc44a88a0a6511c06567b7ce03a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 8 Aug 2025 23:18:45 +0200 |
| Subject: gfs2: Remove duplicate check in do_xmote |
| |
| From: Andreas Gruenbacher <agruenba@redhat.com> |
| |
| [ Upstream commit 9b54770b68ae793a3a8d378be4cda2bb7be6c8cc ] |
| |
| In do_xmote(), remove the duplicate check for the ->go_sync and |
| ->go_inval glock operations. They are either both defined, or none of |
| them are. |
| |
| Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> |
| Reviewed-by: Andrew Price <anprice@redhat.com> |
| Stable-dep-of: bddb53b776fb ("gfs2: Get rid of GLF_INVALIDATE_IN_PROGRESS") |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/gfs2/glock.c | 27 +++++++++++++-------------- |
| 1 file changed, 13 insertions(+), 14 deletions(-) |
| |
| diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c |
| index 5edf125b39fe3..93aae10d78f30 100644 |
| --- a/fs/gfs2/glock.c |
| +++ b/fs/gfs2/glock.c |
| @@ -714,25 +714,24 @@ __acquires(&gl->gl_lockref.lock) |
| &gl->gl_flags)) |
| return; |
| } |
| - if (!glops->go_inval && !glops->go_sync) |
| + if (!glops->go_inval || !glops->go_sync) |
| goto skip_inval; |
| |
| spin_unlock(&gl->gl_lockref.lock); |
| - if (glops->go_sync) { |
| - ret = glops->go_sync(gl); |
| - /* If we had a problem syncing (due to io errors or whatever, |
| - * we should not invalidate the metadata or tell dlm to |
| - * release the glock to other nodes. |
| - */ |
| - if (ret) { |
| - if (cmpxchg(&sdp->sd_log_error, 0, ret)) { |
| - fs_err(sdp, "Error %d syncing glock\n", ret); |
| - gfs2_dump_glock(NULL, gl, true); |
| - } |
| - spin_lock(&gl->gl_lockref.lock); |
| - goto skip_inval; |
| + ret = glops->go_sync(gl); |
| + /* If we had a problem syncing (due to io errors or whatever, |
| + * we should not invalidate the metadata or tell dlm to |
| + * release the glock to other nodes. |
| + */ |
| + if (ret) { |
| + if (cmpxchg(&sdp->sd_log_error, 0, ret)) { |
| + fs_err(sdp, "Error %d syncing glock\n", ret); |
| + gfs2_dump_glock(NULL, gl, true); |
| } |
| + spin_lock(&gl->gl_lockref.lock); |
| + goto skip_inval; |
| } |
| + |
| if (test_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags)) { |
| /* |
| * The call to go_sync should have cleared out the ail list. |
| -- |
| 2.51.0 |
| |