gfs2: When gfs2_dirty_inode gets a glock error, dump the glock
authorBob Peterson <rpeterso@redhat.com>
Thu, 30 Jul 2020 17:31:38 +0000 (12:31 -0500)
committerAndreas Gruenbacher <agruenba@redhat.com>
Fri, 7 Aug 2020 15:26:24 +0000 (17:26 +0200)
Before this patch, if function gfs2_dirty_inode got an error when
trying to lock the inode glock, it complained, but it didn't say
what glock or inode had the problem.

In this case, it almost always means that dinode_in found an error
with the dinode in the file system. So it makes sense to dump the
glock, which tells us the location of the dinode in the file system.
That will allow us to analyze the corruption from the metadata.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/super.c

index 47d0ae1..9f4d9e7 100644 (file)
@@ -566,6 +566,7 @@ static void gfs2_dirty_inode(struct inode *inode, int flags)
                ret = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh);
                if (ret) {
                        fs_err(sdp, "dirty_inode: glock %d\n", ret);
+                       gfs2_dump_glock(NULL, ip->i_gl, true);
                        return;
                }
                need_unlock = 1;