[Cluster-devel] cluster/dlm-kernel/src lkb.c

teigland at sourceware.org teigland at sourceware.org
Thu Aug 31 15:33:24 UTC 2006


CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	STABLE
Changes by:	teigland at sourceware.org	2006-08-31 15:33:23

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

Log message:
	Don't create lkids of 0.  When the lkid counter for bucket 0 of the
	hash table rolls over (it's uint16), we'd get a lkid of zero and
	assign it to the new lkb.  lock_dlm would be confused by a zero lkid
	and use some other, incorrect value as the lkid which would lead to
	a dlm error which would lead to a lock_dlm/gfs panic.
	this should fix bz 199673
	it may also fix bz 172944

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/dlm-kernel/src/lkb.c.diff?cvsroot=cluster&only_with_tag=STABLE&r1=1.3.2.1&r2=1.3.2.1.6.1

--- cluster/dlm-kernel/src/Attic/lkb.c	2005/01/18 10:46:52	1.3.2.1
+++ cluster/dlm-kernel/src/Attic/lkb.c	2006/08/31 15:33:22	1.3.2.1.6.1
@@ -79,6 +79,11 @@
 
 	lkid = bucket | (ls->ls_lkbtbl[bucket].counter++ << 16);
 
+	if (!lkid) {
+		write_unlock(&ls->ls_lkbtbl[bucket].lock);
+		goto retry;
+	}
+
 	if (__find_lock_by_id(ls, lkid)) {
 		write_unlock(&ls->ls_lkbtbl[bucket].lock);
 		goto retry;




More information about the Cluster-devel mailing list