[DRBD-cvs] DRBD CVS: drbd by phil from

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Fri, 16 Jan 2004 13:35:44 +0100 (CET)


DRBD CVS committal

Author  : phil
Host    : 
Module  : drbd

Dir     : drbd/drbd


Modified Files:
      Tag: rel-0_7-branch
	drbd_actlog.c drbd_dsender.c drbd_int.h 


Log Message:
Set w->cb to w_resync_inactive on SyncSource; Lack of it triggered
an assertion at end of sync.

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_actlog.c,v
retrieving revision 1.1.2.54
retrieving revision 1.1.2.55
diff -u -3 -r1.1.2.54 -r1.1.2.55
--- drbd_actlog.c	15 Jan 2004 15:21:07 -0000	1.1.2.54
+++ drbd_actlog.c	16 Jan 2004 12:35:44 -0000	1.1.2.55
@@ -512,7 +512,7 @@
 	if (ext) {
 		if( ext->lce.lc_number == enr) {
 			ext->rs_left -= cleared;
-			D_ASSERT((long)ext->rs_left >= 0);
+			D_ASSERT(ext->rs_left >= 0);
 		} else {
 			if(mdev->cstate == SyncSource) {
 				WARN("Recounting sectors"
@@ -539,6 +539,7 @@
 		list_for_each(le,&mdev->resync->lru) {
 			ext=(struct bm_extent *)list_entry(le,struct lc_element,list);
 			if(ext->rs_left == 0) {
+				ERR_IF(ext->lce.refcnt) continue;
 				spin_unlock(&mdev->al_lock);
 				drbd_update_on_disk_bm(mdev,enr*SM,1);
 				// TODO: reconsider to use the async version
@@ -568,6 +569,10 @@
 	mdev->rs_left -= cleared;
 	D_ASSERT((long)mdev->rs_left >= 0);
 	if( cleared && mdev->rs_left == 0 ) finished=1;
+
+	if( cleared == 0 ) {
+		WARN("cleared == 0; sector = %lu\n",sector);
+	}
 
 	if(jiffies - mdev->rs_mark_time > HZ*10) {
 		mdev->rs_mark_time=jiffies;
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_dsender.c,v
retrieving revision 1.1.2.50
retrieving revision 1.1.2.51
diff -u -3 -r1.1.2.50 -r1.1.2.51
--- drbd_dsender.c	16 Jan 2004 10:09:19 -0000	1.1.2.50
+++ drbd_dsender.c	16 Jan 2004 12:35:44 -0000	1.1.2.51
@@ -142,7 +142,7 @@
 
         if(number > 1000) number=1000;  // Remove later
 	if (atomic_read(&mdev->pending_cnt)>1200) {
-		ERR("pending cnt high -- throttling resync.\n");
+		// INFO("pending cnt high -- throttling resync.\n");
 		goto requeue;
 	}
 
@@ -192,6 +192,7 @@
 		__drbd_queue_work(mdev,&mdev->data.work,w);
 	} else {
 		// If we are SyncSource we must be consistent :)
+		w->cb = w_resync_inactive;
 		mdev->gen_cnt[Flags] |= MDF_Consistent;
 		if ( mdev->rs_total == 0 ) {
 			w->cb = w_resync_finished;
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_int.h,v
retrieving revision 1.58.2.93
retrieving revision 1.58.2.94
diff -u -3 -r1.58.2.93 -r1.58.2.94
--- drbd_int.h	16 Jan 2004 10:09:19 -0000	1.58.2.93
+++ drbd_int.h	16 Jan 2004 12:35:44 -0000	1.58.2.94
@@ -621,7 +621,7 @@
 
 struct bm_extent { // 16MB sized extents.
 	struct lc_element lce;
-	unsigned int rs_left; //number of sectors our of sync in this extent.
+	int rs_left; //number of sectors our of sync in this extent.
 	unsigned long flags;
 };