ocfs2/dlm: do not get resource spinlock if lockres is new
authorJoseph Qi <joseph.qi@huawei.com>
Thu, 25 Sep 2014 23:05:16 +0000 (16:05 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 5 Nov 2014 20:27:46 +0000 (20:27 +0000)
commit40d31c4997351e1c80e95eb961366c8842ab3fc1
tree523a73a61c011009d1ce75dcb446b2c12afc8e83
parenta428c0e1d7781192fe806246f29b4dbeaa2a7ce1
ocfs2/dlm: do not get resource spinlock if lockres is new

commit 5760a97c7143c208fa3a8f8cad0ed7dd672ebd28 upstream.

There is a deadlock case which reported by Guozhonghua:
  https://oss.oracle.com/pipermail/ocfs2-devel/2014-September/010079.html

This case is caused by &res->spinlock and &dlm->master_lock
misordering in different threads.

It was introduced by commit 8d400b81cc83 ("ocfs2/dlm: Clean up refmap
helpers").  Since lockres is new, it doesn't not require the
&res->spinlock.  So remove it.

Fixes: 8d400b81cc83 ("ocfs2/dlm: Clean up refmap helpers")
Signed-off-by: Joseph Qi <joseph.qi@huawei.com>
Reviewed-by: joyce.xue <xuejiufei@huawei.com>
Reported-by: Guozhonghua <guozhonghua@h3c.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Mark Fasheh <mfasheh@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
fs/ocfs2/dlm/dlmmaster.c