[DRBD-cvs] drbd by phil; Now sync_groups are working correct! Yes...

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Sun, 18 Jan 2004 20:04:52 +0100 (CET)


DRBD CVS committal

Author  : phil
Module  : drbd

Dir     : drbd/drbd


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


Log Message:
Now sync_groups are working correct! Yes. Finally.

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_dsender.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_dsender.c	18 Jan 2004 10:12:38 -0000	1.1.2.54
+++ drbd_dsender.c	18 Jan 2004 19:04:52 -0000	1.1.2.55
@@ -233,7 +233,7 @@
 	_set_cstate(mdev,ns);
 
 	mdev->resync_work.cb = w_make_resync_request;
-	_drbd_dequeue_work(&mdev->data.work,&mdev->resync_work);
+	_drbd_queue_work(&mdev->data.work,&mdev->resync_work);
 }
 
 
@@ -294,11 +294,9 @@
 
 	PARANOIA_BUG_ON(w != &mdev->resync_work);
 
-	WARN("w_resume_next_sg() called.\n");
-
 	drbd_global_lock();
 
-	for (i=0; i < minor_count; i++) {
+	for (i=0; i < minor_count; i++) { // find next sync group
 		odev = drbd_conf + i;
 		if ( odev->sync_conf.group > mdev->sync_conf.group
 		     && odev->sync_conf.group < ng ) {
@@ -306,13 +304,10 @@
 		}
 	}
 
-	WARN("ng = %d\n",ng);
-
-	for (i=0; i < minor_count; i++) {
+	for (i=0; i < minor_count; i++) { // resume all devices in next group
 		odev = drbd_conf + i;
 		if ( odev->sync_conf.group == ng ) {
 			_drbd_rs_resume(odev);
-			WARN("odev = %p\n",odev);
 		}
 	}
 
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_int.h,v
retrieving revision 1.58.2.98
retrieving revision 1.58.2.99
diff -u -3 -r1.58.2.98 -r1.58.2.99
--- drbd_int.h	18 Jan 2004 10:12:38 -0000	1.58.2.98
+++ drbd_int.h	18 Jan 2004 19:04:52 -0000	1.58.2.99
@@ -1008,8 +1008,10 @@
 _drbd_dequeue_work(struct drbd_work_queue *q, struct drbd_work *w)
 {
 	if(!list_empty(&w->list)) {
+		if(down_trylock(&q->s)) {
+			printk("down_trylock() failed in drbd_dequeue_work\n");
+		}
 		list_del_init(&w->list);
-		down(&q->s); // Should! never sleep.
 	}
 }
 
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.100
retrieving revision 1.73.2.101
diff -u -3 -r1.73.2.100 -r1.73.2.101
--- drbd_main.c	18 Jan 2004 10:12:38 -0000	1.73.2.100
+++ drbd_main.c	18 Jan 2004 19:04:52 -0000	1.73.2.101
@@ -322,9 +322,8 @@
 	wake_up_interruptible(&mdev->cstate_wait);
 
 	if ( ( os==SyncSource || os==SyncTarget ) && ns <= Connected ) {
-		WARN("queuing w_resume_next_sg().\n");
 		mdev->resync_work.cb = w_resume_next_sg;
-		_drbd_dequeue_work(&mdev->data.work,&mdev->resync_work);
+		_drbd_queue_work(&mdev->data.work,&mdev->resync_work);
 	}
 }