]> err.no Git - linux-2.6/commit
[DLM] fix resend rcom lock
authorDavid Teigland <teigland@redhat.com>
Wed, 13 Dec 2006 16:36:37 +0000 (10:36 -0600)
committerSteven Whitehouse <swhiteho@redhat.com>
Mon, 5 Feb 2007 18:35:47 +0000 (13:35 -0500)
commitdc200a8848cca8b0e99012996c66f4b379a390ed
tree8237c1e9d972beabbc674136d33479eddd396e7d
parentc378051177dce4421428fd1691ffdf15ad57c161
[DLM] fix resend rcom lock

There's a chance the new master of resource hasn't learned it's the new
master before another node sends it a lock during recovery.  The node
sending the lock needs to resend if this happens.

- A sends a master lookup for resource R to C
- B sends a master lookup for resource R to C
- C receives A's lookup, assigns A to be master of R and
  sends a reply back to A
- C receives B's lookup and sends a reply back to B saying
  that A is the master
- B receives lookup reply from C and sends its lock for R to A
- A receives lock from B, doesn't think it's the master of R
  and sends an error back to B
- A receives lookup reply from C and becomes master of R
- B gets error back from A and resends its lock back to A
  (this resending is what this patch does)
- A receives lock from B, it now sees it's the master of R
  and takes the lock

Signed-off-by: David Teigland <teigland@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/dlm/lock.c