• G
    md-cluster: fix deadlock issue on message lock · 66099bb0
    Guoqing Jiang 提交于
    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: NGoldwyn Rodrigues <rgoldwyn@suse.com>
    Signed-off-by: NLidong Zhong <ldzhong@suse.com>
    Signed-off-by: NGuoqing Jiang <gqjiang@suse.com>
    Signed-off-by: NNeilBrown <neilb@suse.com>
    66099bb0
md-cluster.c 25.7 KB