[DRBD-cvs] svn commit by phil - r2303 - trunk/drbd - Shaking the bugs out of the last big change...

drbd-cvs at lists.linbit.com drbd-cvs at lists.linbit.com
Thu Jul 27 16:06:51 CEST 2006


Author: phil
Date: 2006-07-27 16:06:49 +0200 (Thu, 27 Jul 2006)
New Revision: 2303

Modified:
   trunk/drbd/drbd_receiver.c
   trunk/drbd/drbd_worker.c
Log:
Shaking the bugs out of the last big change...


Modified: trunk/drbd/drbd_receiver.c
===================================================================
--- trunk/drbd/drbd_receiver.c	2006-07-27 12:59:48 UTC (rev 2302)
+++ trunk/drbd/drbd_receiver.c	2006-07-27 14:06:49 UTC (rev 2303)
@@ -2396,6 +2396,16 @@
 		dec_local(mdev);
 	}
 
+	// Receiving side (may be primary, in case we had two primaries)
+	spin_lock_irq(&mdev->ee_lock);
+	_drbd_wait_ee_list_empty(mdev,&mdev->read_ee);
+	_drbd_wait_ee_list_empty(mdev,&mdev->active_ee);
+	_drbd_wait_ee_list_empty(mdev,&mdev->sync_ee);
+	_drbd_clear_done_ee(mdev);
+	mdev->epoch_size = 0;
+	spin_unlock_irq(&mdev->ee_lock);
+	// Needs to happen before we schedule the disconnect work callback,
+	// Since they might have something for the worker's queue as well.
 
 	disconnect_work = kmalloc(sizeof(struct drbd_work),GFP_KERNEL);
 	if(disconnect_work) {

Modified: trunk/drbd/drbd_worker.c
===================================================================
--- trunk/drbd/drbd_worker.c	2006-07-27 12:59:48 UTC (rev 2302)
+++ trunk/drbd/drbd_worker.c	2006-07-27 14:06:49 UTC (rev 2303)
@@ -667,15 +667,6 @@
 	drbd_fail_pending_reads(mdev);
 	drbd_rs_cancel_all(mdev);
 
-	// Receiving side (may be primary, in case we had two primaries)
-	spin_lock_irq(&mdev->ee_lock);
-	_drbd_wait_ee_list_empty(mdev,&mdev->read_ee);
-	_drbd_wait_ee_list_empty(mdev,&mdev->active_ee);
-	_drbd_wait_ee_list_empty(mdev,&mdev->sync_ee);
-	_drbd_clear_done_ee(mdev);
-	mdev->epoch_size = 0;
-	spin_unlock_irq(&mdev->ee_lock);
-
 	// primary
 	clear_bit(ISSUE_BARRIER,&mdev->flags);
 



More information about the drbd-cvs mailing list