[DRBD-cvs] drbd by phil; Now sync_groups are working correct! Yes...
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Sun, 18 Jan 2004 20:04:52 +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 drbd_main.c
Log Message:
Now sync_groups are working correct! Yes. Finally.
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_dsender.c,v
retrieving revision 1.1.2.54
retrieving revision 1.1.2.55
diff -u -3 -r1.1.2.54 -r1.1.2.55
--- drbd_dsender.c 18 Jan 2004 10:12:38 -0000 1.1.2.54
+++ drbd_dsender.c 18 Jan 2004 19:04:52 -0000 1.1.2.55
@@ -233,7 +233,7 @@
_set_cstate(mdev,ns);
mdev->resync_work.cb = w_make_resync_request;
- _drbd_dequeue_work(&mdev->data.work,&mdev->resync_work);
+ _drbd_queue_work(&mdev->data.work,&mdev->resync_work);
}
@@ -294,11 +294,9 @@
PARANOIA_BUG_ON(w != &mdev->resync_work);
- WARN("w_resume_next_sg() called.\n");
-
drbd_global_lock();
- for (i=0; i < minor_count; i++) {
+ for (i=0; i < minor_count; i++) { // find next sync group
odev = drbd_conf + i;
if ( odev->sync_conf.group > mdev->sync_conf.group
&& odev->sync_conf.group < ng ) {
@@ -306,13 +304,10 @@
}
}
- WARN("ng = %d\n",ng);
-
- for (i=0; i < minor_count; i++) {
+ for (i=0; i < minor_count; i++) { // resume all devices in next group
odev = drbd_conf + i;
if ( odev->sync_conf.group == ng ) {
_drbd_rs_resume(odev);
- WARN("odev = %p\n",odev);
}
}
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_int.h,v
retrieving revision 1.58.2.98
retrieving revision 1.58.2.99
diff -u -3 -r1.58.2.98 -r1.58.2.99
--- drbd_int.h 18 Jan 2004 10:12:38 -0000 1.58.2.98
+++ drbd_int.h 18 Jan 2004 19:04:52 -0000 1.58.2.99
@@ -1008,8 +1008,10 @@
_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);
- down(&q->s); // Should! never sleep.
}
}
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.100
retrieving revision 1.73.2.101
diff -u -3 -r1.73.2.100 -r1.73.2.101
--- drbd_main.c 18 Jan 2004 10:12:38 -0000 1.73.2.100
+++ drbd_main.c 18 Jan 2004 19:04:52 -0000 1.73.2.101
@@ -322,9 +322,8 @@
wake_up_interruptible(&mdev->cstate_wait);
if ( ( os==SyncSource || os==SyncTarget ) && ns <= Connected ) {
- WARN("queuing w_resume_next_sg().\n");
mdev->resync_work.cb = w_resume_next_sg;
- _drbd_dequeue_work(&mdev->data.work,&mdev->resync_work);
+ _drbd_queue_work(&mdev->data.work,&mdev->resync_work);
}
}