]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
gfs2: call truncate_inode_pages_final for address space glocks
authorBob Peterson <rpeterso@redhat.com>
Wed, 16 Sep 2020 16:06:23 +0000 (11:06 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Nov 2020 10:51:27 +0000 (11:51 +0100)
[ 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

index f13b136654cae0acc6812af38bcd7771d896f967..3554e71be06ec714ccf7a70c936ebda0739e4a57 100644 (file)
@@ -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);
 }