cluster/dlm-kernel/src locking.c

teigland@sourceware.org teigland@sourceware.org
Wed Feb 23 07:37:00 GMT 2005


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland@sourceware.org	2005-02-23 07:37:38

Modified files:
	dlm-kernel/src : locking.c 

Log message:
	When locks on the convert queue are granted, we need to try again to grant
	locks from the beginning of the convert queue.  Locks at the beginning may
	not be grantable because of locks at the end.  But, granting locks at the
	end (permitted when using the NOORDER flag) may make earlier locks
	grantable.  Specifically, we have the following situation when running
	"gfs_tool freeze" in parallel on three machines:
	
	Granted 1 PR
	2 PR
	3 PR
	
	* nodeid 3 converts PR->CW
	
	Granted 1 PR
	2 PR
	Convert 3 PR->CW
	
	* nodeid 2 converts PR->CW
	granted mode is demoted to avoid conversion deadlock
	
	Granted 1 PR
	Convert 2 NL->CW
	3 PR->CW
	
	* nodeid 1 converts PR->CW
	granted mode is demoted to avoid conversion deadlock
	
	Granted
	Convert 1 NL->CW
	2 NL->CW
	3 PR->CW
	
	* conversions for 1 and 2 are blocked by 3's PR
	* conversion for 3 is granted
	
	Granted 3 CW
	Convert 1 NL->CW
	2 NL->CW
	
	* other conversions are now grantable, we must try to grant them again

Patches:
http://sources.redhat.com/cgi-bin/cvsweb.cgi/cluster/dlm-kernel/src/locking.c.diff?cvsroot=cluster&r1=1.56&r2=1.57



More information about the Cluster-cvs mailing list