[DRBD-cvs] svn commit by phil - r2295 - in trunk: . drbd - Work of
today afternoon...
drbd-cvs at lists.linbit.com
drbd-cvs at lists.linbit.com
Tue Jul 25 15:55:02 CEST 2006
Author: phil
Date: 2006-07-25 15:55:01 +0200 (Tue, 25 Jul 2006)
New Revision: 2295
Modified:
trunk/ROADMAP
trunk/drbd/drbd_actlog.c
trunk/drbd/drbd_req.c
Log:
Work of today afternoon...
Modified: trunk/ROADMAP
===================================================================
--- trunk/ROADMAP 2006-07-25 10:32:38 UTC (rev 2294)
+++ trunk/ROADMAP 2006-07-25 13:55:01 UTC (rev 2295)
@@ -844,3 +844,34 @@
+
+Currently known bug(s):
+-----------------------
+The client (kjournald) hangs in drbd_al_begin_io(). It waits for
+the completion of w_al_write_transaction(). That will not happen
+since the worker exited alrady.
+
+The receiver hangs in drbd_disconnect(), actuall at this line:
+wait_event( mdev->cstate_wait, atomic_read(&mdev->ap_pending_cnt)==0 );
+
+BTW, mdev->ap_pending_cnt is -1.
+
+The counter could got below zero, since the requests gets onto the
+TL first, and then it gets queued on the worker's queue.
+
+The the disconnect code comes in, and decreases mdev->ap_pending_cnt
+for each entry in the TL.
+
+The entry on the worker's queue is still there and would increase
+the counter again, but the worker is dead by now.
+
+Solution:
+
+ * Mark requests as they are moved from the queue to the socket.
+ The tl_clear() function should only decrease mdev->ap_pending_cnt
+ for requests that where already on the socket...
+ * The worker should not exit upon loss of connection.
+
+
+
+
Modified: trunk/drbd/drbd_actlog.c
===================================================================
--- trunk/drbd/drbd_actlog.c 2006-07-25 10:32:38 UTC (rev 2294)
+++ trunk/drbd/drbd_actlog.c 2006-07-25 13:55:01 UTC (rev 2295)
@@ -949,6 +949,7 @@
clear_bit(BME_NO_WRITES,&bm_ext->flags);
lc_del(mdev->resync,&bm_ext->lce);
}
+ mdev->resync->used=0;
dec_local(mdev);
}
atomic_set(&mdev->resync_locked,0);
Modified: trunk/drbd/drbd_req.c
===================================================================
--- trunk/drbd/drbd_req.c 2006-07-25 10:32:38 UTC (rev 2294)
+++ trunk/drbd/drbd_req.c 2006-07-25 13:55:01 UTC (rev 2295)
@@ -355,7 +355,7 @@
}
if (mdev->net_conf->two_primaries) {
- if(ee_have_write(mdev,req)) {
+ if(ee_have_write(mdev,req)) { // tl_add() here
WARN("Concurrent write! [DISCARD L] sec=%lu\n",
(unsigned long)sector);
dec_local(mdev);
More information about the drbd-cvs
mailing list