[DRBD-cvs] drbd by phil; * _drbd_dequeue_work() was a) buggy b) I...

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Tue, 3 Feb 2004 08:57:19 +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 


Log Message:
* _drbd_dequeue_work() was
  a) buggy
  b) Impossible to use correctly.
   => Removed

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_dsender.c,v
retrieving revision 1.1.2.67
retrieving revision 1.1.2.68
diff -u -3 -r1.1.2.67 -r1.1.2.68
--- drbd_dsender.c	1 Feb 2004 18:15:08 -0000	1.1.2.67
+++ drbd_dsender.c	3 Feb 2004 07:57:14 -0000	1.1.2.68
@@ -267,7 +267,11 @@
 {
 	drbd_dev* mdev = (drbd_dev*) data;
 
-	drbd_queue_work(mdev,&mdev->data.work,&mdev->resync_work);
+	if(unlikely(test_and_clear_bit(SYNC_PAUSED,&mdev->flags))) {
+		mdev->resync_work.cb = w_resync_inactive;
+	} else {
+		drbd_queue_work(mdev,&mdev->data.work,&mdev->resync_work);
+	}
 }
 
 int w_make_resync_request(drbd_dev* mdev, struct drbd_work* w)
@@ -439,9 +443,7 @@
 	D_ASSERT(mdev->cstate == SyncSource || mdev->cstate == SyncTarget);
 	ns = mdev->cstate + (PausedSyncS - SyncSource);
 
-	del_timer_sync(&mdev->resync_timer);
-	_drbd_dequeue_work(&mdev->data.work,&mdev->resync_work);
-	mdev->resync_work.cb = w_resync_inactive;
+	set_bit(SYNC_PAUSED,&mdev->flags);
 
 	_set_cstate(mdev,ns);
 	INFO("Syncer waits for sync group.\n");
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_int.h,v
retrieving revision 1.58.2.111
retrieving revision 1.58.2.112
diff -u -3 -r1.58.2.111 -r1.58.2.112
--- drbd_int.h	2 Feb 2004 13:17:07 -0000	1.58.2.111
+++ drbd_int.h	3 Feb 2004 07:57:14 -0000	1.58.2.112
@@ -566,13 +566,11 @@
 #define COLLECT_ZOMBIES    1
 #define SEND_PING          2
 #define WRITER_PRESENT     3
-//#define START_SYNC         4
+#define SYNC_PAUSED        4
 #define DO_NOT_INC_CONCNT  5
 #define WRITE_HINT_QUEUED  6
 #define PARTNER_DISKLESS   7
-//#define SYNC_FINISHED      8
 #define PROCESS_EE_RUNNING 9
-//#define SYNC_CONTINUE     10
 
 struct BitMap {
 	unsigned long dev_size;
@@ -956,17 +954,6 @@
 	spin_lock_irqsave(&mdev->req_lock,flags);
 	_set_cstate(mdev,ns);
 	spin_unlock_irqrestore(&mdev->req_lock,flags);
-}
-
-static inline void
-_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);
-	}
 }
 
 static inline void