Hi, On Thu, 2009-11-05 at 14:36 -0500, Allen Belletti wrote: > Saw an interesting and different GFS2 death this morning that I wanted > to pass along in case anyone has insights. We have not seen any of the > "hanging in dlm_posix_lock" since fsck'ing early Sunday morning. In any > case I'm pretty confident that's being triggered by the creation & > deletion of ".lock" files within Dovecot. This was something completely > different and it left some potentially useful debug info in the logs. > I've made an educated guess as to what this might be. The attached patch should fix it, if my hunch is correct. If you have the back trace I mentioned in my previous email, we can confirm that this really is the cause, Steve. >From 89fc5489d25fc0a34a367b119448a037ed162c00 Mon Sep 17 00:00:00 2001 From: Steven Whitehouse <swhiteho@xxxxxxxxxx> Date: Fri, 6 Nov 2009 11:10:51 +0000 Subject: [PATCH 27/27] GFS2: Locking order fix in gfs2_check_blk_state In some cases we already have the rindex lock when we enter this function. Signed-off-by: Steven Whitehouse <swhiteho@xxxxxxxxxx> --- fs/gfs2/rgrp.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index 8f1cfb0..0608f49 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c @@ -1710,11 +1710,16 @@ int gfs2_check_blk_type(struct gfs2_sbd *sdp, u64 no_addr, unsigned int type) { struct gfs2_rgrpd *rgd; struct gfs2_holder ri_gh, rgd_gh; + struct gfs2_inode *ip = GFS2_I(sdp->sd_rindex); + int ri_locked = 0; int error; - error = gfs2_rindex_hold(sdp, &ri_gh); - if (error) - goto fail; + if (!gfs2_glock_is_locked_by_me(ip->i_gl)) { + error = gfs2_rindex_hold(sdp, &ri_gh); + if (error) + goto fail; + ri_locked = 1; + } error = -EINVAL; rgd = gfs2_blk2rgrpd(sdp, no_addr); @@ -1730,7 +1735,8 @@ int gfs2_check_blk_type(struct gfs2_sbd *sdp, u64 no_addr, unsigned int type) gfs2_glock_dq_uninit(&rgd_gh); fail_rindex: - gfs2_glock_dq_uninit(&ri_gh); + if (ri_locked) + gfs2_glock_dq_uninit(&ri_gh); fail: return error; } -- 1.6.2.5 -- Linux-cluster mailing list Linux-cluster@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/linux-cluster