[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