dlm: fix basts for granted CW waiting PR/CW

The fix in commit 3650925893469ccb03dbcc6a440c5d363350f591 was addressing
the case of a granted PR lock with waiting PR and CW locks. It's a
special case that requires forcing a CW bast. However, that forced CW
bast was incorrectly applying to a second condition where the granted
lock was CW. So, the holder of a CW lock could receive an extraneous CW
bast instead of a PR bast. This fix narrows the original special case to
what was intended.

Signed-off-by: David Teigland <teigland@redhat.com>

+2 -1
+2 -1
fs/dlm/lock.c
··· 1782 1782 1783 1783 list_for_each_entry_safe(lkb, s, &r->res_grantqueue, lkb_statequeue) { 1784 1784 if (lkb->lkb_bastfn && lock_requires_bast(lkb, high, cw)) { 1785 - if (cw && high == DLM_LOCK_PR) 1785 + if (cw && high == DLM_LOCK_PR && 1786 + lkb->lkb_grmode == DLM_LOCK_PR) 1786 1787 queue_bast(r, lkb, DLM_LOCK_CW); 1787 1788 else 1788 1789 queue_bast(r, lkb, high);