]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ocfs2/dlm: clear refmap bit of recovery lock while doing local recovery cleanup
authorxuejiufei <xuejiufei@huawei.com>
Fri, 5 Feb 2016 23:36:47 +0000 (15:36 -0800)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 26 May 2016 22:44:46 +0000 (15:44 -0700)
Orabug: stable_rc4

[ Upstream commit c95a51807b730e4681e2ecbdfd669ca52601959e ]

When recovery master down, dlm_do_local_recovery_cleanup() only remove
the $RECOVERY lock owned by dead node, but do not clear the refmap bit.
Which will make umount thread falling in dead loop migrating $RECOVERY
to the dead node.

Signed-off-by: xuejiufei <xuejiufei@huawei.com>
Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
Cc: Mark Fasheh <mfasheh@suse.de>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Junxiao Bi <junxiao.bi@oracle.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
(cherry picked from commit ff5ecd2953a635bf70101dac550fcb01ced863e9)

Signed-off-by: Dan Duval <dan.duval@oracle.com>
fs/ocfs2/dlm/dlmrecovery.c

index 3d90ad7ff91fe4748386218807f7131bd61d7d69..f25ff5d3a2f99b2b1654276a6ae622fa8b1aacfc 100644 (file)
@@ -2360,6 +2360,8 @@ static void dlm_do_local_recovery_cleanup(struct dlm_ctxt *dlm, u8 dead_node)
                                                break;
                                        }
                                }
+                               dlm_lockres_clear_refmap_bit(dlm, res,
+                                               dead_node);
                                spin_unlock(&res->spinlock);
                                continue;
                        }