[DRBD-cvs] r1575 - branches/drbd-0.7/drbd
svn at svn.drbd.org
svn at svn.drbd.org
Fri Oct 1 10:15:20 CEST 2004
Author: phil
Date: 2004-10-01 10:15:17 +0200 (Fri, 01 Oct 2004)
New Revision: 1575
Modified:
branches/drbd-0.7/drbd/drbd_worker.c
Log:
* A bugfix for a very unlikely race that could cause a
read on a Primary/SyncTarget node to return invalid
data.
* This was pointed out by an ASSERTION in drbd_put_ee()
and Benoit Ropartz who patiently reportet that this
ASSERTION triggered in his tests.
Modified: branches/drbd-0.7/drbd/drbd_worker.c
===================================================================
--- branches/drbd-0.7/drbd/drbd_worker.c 2004-09-30 14:06:32 UTC (rev 1574)
+++ branches/drbd-0.7/drbd/drbd_worker.c 2004-10-01 08:15:17 UTC (rev 1575)
@@ -585,7 +585,12 @@
dec_unacked(mdev,HERE);
spin_lock_irq(&mdev->ee_lock);
- drbd_put_ee(mdev,e);
+ if( page_count(drbd_bio_get_page(&e->private_bio)) > 1 ) {
+ /* This might happen if sendpage() has not finished */
+ list_add_tail(&e->w.list,&mdev->net_ee);
+ } else {
+ drbd_put_ee(mdev,e);
+ }
spin_unlock_irq(&mdev->ee_lock);
if(unlikely(!ok)) ERR("drbd_send_block() failed\n");
More information about the drbd-cvs
mailing list