[DRBD-cvs] drbd by phil; Added all missing dec_ap_pending()s to t...
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Fri, 7 May 2004 11:32:50 +0200 (CEST)
DRBD CVS committal
Author : phil
Module : drbd
Dir : drbd/drbd
Modified Files:
Tag: rel-0_7-branch
drbd_main.c drbd_receiver.c
Log Message:
Added all missing dec_ap_pending()s to tl_clear(). Now the ap_pending
count returns to 0 upon loss of connection. Nice.
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.164
retrieving revision 1.73.2.165
diff -u -3 -r1.73.2.164 -r1.73.2.165
--- drbd_main.c 6 May 2004 13:59:13 -0000 1.73.2.164
+++ drbd_main.c 7 May 2004 09:32:44 -0000 1.73.2.165
@@ -288,10 +288,19 @@
spin_lock_irq(&mdev->tl_lock);
b=mdev->oldest_barrier;
+ mdev->oldest_barrier = new_first;
+ mdev->newest_barrier = new_first;
+
+ spin_unlock_irq(&mdev->tl_lock);
+
+ inc_ap_pending(mdev); // Since we count the old first as well...
+
while ( b ) {
list_for_each_safe(le, tle, &b->requests) {
r = list_entry(le, struct drbd_request,w.list);
if( (r->rq_status&0xfffe) != RQ_DRBD_SENT ) {
+ if(mdev->conf.wire_protocol != DRBD_PROT_A )
+ dec_ap_pending(mdev,HERE);
drbd_end_req(r,RQ_DRBD_SENT,ERF_NOTLD|1,
drbd_req_get_sector(r));
goto mark;
@@ -307,12 +316,8 @@
b=b->next;
list_del(&f->requests);
kfree(f);
+ dec_ap_pending(mdev,HERE);
}
-
- mdev->oldest_barrier = new_first;
- mdev->newest_barrier = new_first;
-
- spin_unlock_irq(&mdev->tl_lock);
}
/**
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_receiver.c,v
retrieving revision 1.97.2.148
retrieving revision 1.97.2.149
diff -u -3 -r1.97.2.148 -r1.97.2.149
--- drbd_receiver.c 6 May 2004 15:59:55 -0000 1.97.2.148
+++ drbd_receiver.c 7 May 2004 09:32:44 -0000 1.97.2.149
@@ -1520,8 +1520,10 @@
on the fly. */
atomic_set(&mdev->rs_pending_cnt,0);
- ERR_IF(atomic_read(&mdev->ap_pending_cnt))
+ if(atomic_read(&mdev->ap_pending_cnt)) {
+ ERR("ap_pending_cnt = %d\n",atomic_read(&mdev->ap_pending_cnt));
atomic_set(&mdev->ap_pending_cnt,0);
+ }
wake_up_interruptible(&mdev->cstate_wait);