• Guoqing Jiang's avatar
    md-cluster: fix deadlock issue on message lock · 66099bb0
    Guoqing Jiang authored
    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: default avatarGoldwyn Rodrigues <rgoldwyn@suse.com>
    Signed-off-by: default avatarLidong Zhong <ldzhong@suse.com>
    Signed-off-by: default avatarGuoqing Jiang <gqjiang@suse.com>
    Signed-off-by: default avatarNeilBrown <neilb@suse.com>
    66099bb0
md-cluster.c 25.7 KB