md-cluster: fix deadlock issue on message lock
There is problem with previous communication mechanism, and we got below
deadlock scenario with cluster which has 3 nodes.
	Sender                	    Receiver        		Receiver
	token(EX)
       message(EX)
      writes message
   downconverts message(CR)
      requests ack(EX)
		                  get message(CR)            gets message(CR)
                		  reads message                reads message
		               requests EX on message    requests EX on message
To fix this problem, we do the following changes:
1. the sender downconverts MESSAGE to CW rather than CR.
2. and the receiver request PR lock not EX lock on message.
And in case we failed to down-convert EX to CW on message, it is better to
unlock message otherthan still hold the lock.
Reviewed-by:  Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by:
Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by:  Lidong Zhong <ldzhong@suse.com>
Signed-off-by:
Lidong Zhong <ldzhong@suse.com>
Signed-off-by:  Guoqing Jiang <gqjiang@suse.com>
Signed-off-by:
Guoqing Jiang <gqjiang@suse.com>
Signed-off-by:  NeilBrown <neilb@suse.com>
NeilBrown <neilb@suse.com>
Loading
Please register or sign in to comment
