| From eb53eda883e77363d0af22801d68e0cacf993ef9 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 16 Sep 2020 11:06:23 -0500 |
| Subject: gfs2: call truncate_inode_pages_final for address space glocks |
| |
| From: Bob Peterson <rpeterso@redhat.com> |
| |
| [ Upstream commit ee1e2c773e4f4ce2213f9d77cc703b669ca6fa3f ] |
| |
| Before this patch, we were not calling truncate_inode_pages_final for the |
| address space for glocks, which left the possibility of a leak. We now |
| take care of the problem instead of complaining, and we do it during |
| glock tear-down.. |
| |
| Signed-off-by: Bob Peterson <rpeterso@redhat.com> |
| Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/gfs2/glock.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c |
| index f13b136654cae..3554e71be06ec 100644 |
| --- a/fs/gfs2/glock.c |
| +++ b/fs/gfs2/glock.c |
| @@ -270,7 +270,12 @@ static void __gfs2_glock_put(struct gfs2_glock *gl) |
| gfs2_glock_remove_from_lru(gl); |
| spin_unlock(&gl->gl_lockref.lock); |
| GLOCK_BUG_ON(gl, !list_empty(&gl->gl_holders)); |
| - GLOCK_BUG_ON(gl, mapping && mapping->nrpages && !gfs2_withdrawn(sdp)); |
| + if (mapping) { |
| + truncate_inode_pages_final(mapping); |
| + if (!gfs2_withdrawn(sdp)) |
| + GLOCK_BUG_ON(gl, mapping->nrpages || |
| + mapping->nrexceptional); |
| + } |
| trace_gfs2_glock_put(gl); |
| sdp->sd_lockstruct.ls_ops->lm_put_lock(gl); |
| } |
| -- |
| 2.27.0 |
| |