[DRBD-cvs] svn commit by phil - r2182 - branches/drbd-0.7/drbd - Fixes an OOPS in lc_set() / drbd_al_read_log() How to r

drbd-cvs at lists.linbit.com drbd-cvs at lists.linbit.com
Fri Apr 28 15:57:05 CEST 2006


Author: phil
Date: 2006-04-28 15:57:04 +0200 (Fri, 28 Apr 2006)
New Revision: 2182

Modified:
   branches/drbd-0.7/drbd/lru_cache.c
Log:
Fixes an OOPS in lc_set() / drbd_al_read_log()

How to reproduce:

drbdadm up r0         # on both nodes
drbdadm primary r0    # on the node to crash
mkfs /dev/drbd0
drbdsetup /dev/drbd0 resize -d 200M
drbdadm down r0
drbdadm up r0         # crash happens here

The bug was due to the fact that lc_del() left some list
poison in the hlist structures of the activity log LRU cache.

When reading in the AL ( via drbdadm up ) we OOPSed on that
list poison.

Fixed that.


Modified: branches/drbd-0.7/drbd/lru_cache.c
===================================================================
--- branches/drbd-0.7/drbd/lru_cache.c	2006-04-26 13:59:26 UTC (rev 2181)
+++ branches/drbd-0.7/drbd/lru_cache.c	2006-04-28 13:57:04 UTC (rev 2182)
@@ -137,7 +137,7 @@
 	PARANOIA_ENTRY();
 	BUG_ON(e->refcnt);
 	list_del(&e->list);
-	hlist_del(&e->colision);
+	hlist_del_init(&e->colision);
 	e->lc_number = LC_FREE;
 	e->refcnt = 0;
 	list_add(&e->list,&lc->free);



More information about the drbd-cvs mailing list