[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