[DRBD-cvs] drbd by lars; the assertions triggered on bloodymary,

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Wed, 19 May 2004 00:07:01 +0200 (CEST)


DRBD CVS committal

Author  : lars
Module  : drbd

Dir     : drbd/drbd


Modified Files:
      Tag: rel-0_7-branch
	drbd_receiver.c drbd_req-2.4.c 


Log Message:
the assertions triggered on bloodymary,
so we *need* to do it my way.

reduce a race in the request path while exchanging bitmap information
race still remains theoretically...

	-- lge


===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_receiver.c,v
retrieving revision 1.97.2.158
retrieving revision 1.97.2.159
diff -u -3 -r1.97.2.158 -r1.97.2.159
--- drbd_receiver.c	18 May 2004 16:20:42 -0000	1.97.2.158
+++ drbd_receiver.c	18 May 2004 22:06:55 -0000	1.97.2.159
@@ -204,7 +204,7 @@
 	page = drbd_bio_get_page(&e->private_bio);
 ONLY_IN_26(
 	D_ASSERT(page == e->ee_bvec.bv_page);
-	// page = e->ee_bvec.bv_page;
+	page = e->ee_bvec.bv_page;
 )
 	kmem_cache_free(drbd_ee_cache, e);
 	mdev->ee_vacant--;
@@ -325,7 +325,7 @@
 	e=list_entry(le, struct Tl_epoch_entry, w.list);
 ONLY_IN_26(
 	D_ASSERT(e->private_bio.bi_idx == 0);
-	// drbd_ee_init(e,e->ee_bvec.bv_page); // reinitialize
+	drbd_ee_init(e,e->ee_bvec.bv_page); // reinitialize
 )
 	e->block_id = !ID_VACANT;
 	SET_MAGIC(e);
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_req-2.4.c,v
retrieving revision 1.33.2.79
retrieving revision 1.33.2.80
diff -u -3 -r1.33.2.79 -r1.33.2.80
--- drbd_req-2.4.c	18 May 2004 16:20:42 -0000	1.33.2.79
+++ drbd_req-2.4.c	18 May 2004 22:06:56 -0000	1.33.2.80
@@ -198,6 +198,8 @@
 
 	// down_read(mdev->device_lock);
 
+	wait_event( mdev->cstate_wait, (volatile int)(mdev->cstate < WFBitMapS || mdev->cstate > WFBitMapT) );
+
 	local = inc_local(mdev);
 	// FIXME special case handling of READA ??
 	if (rw == READ || rw == READA) {