[DRBD-cvs] drbd by lars; fixed: cannot tell a T from an S :-/ ver...
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Tue, 18 May 2004 11:00:25 +0200 (CEST)
DRBD CVS committal
Author : lars
Module : drbd
Dir : drbd/drbd
Modified Files:
Tag: rel-0_7-branch
drbd_dsender.c drbd_main.c drbd_proc.c
Log Message:
fixed:
cannot tell a T from an S :-/
very unlikely race with _drbd_rs_pause
make _set_cstate noisy at compile time upon request
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_dsender.c,v
retrieving revision 1.1.2.108
retrieving revision 1.1.2.109
diff -u -3 -r1.1.2.108 -r1.1.2.109
--- drbd_dsender.c 17 May 2004 12:55:32 -0000 1.1.2.108
+++ drbd_dsender.c 18 May 2004 09:00:20 -0000 1.1.2.109
@@ -831,10 +831,17 @@
drbd_md_write(mdev);
drbd_global_lock();
- _drbd_pause_higher_sg(mdev);
- if(_drbd_lower_sg_running(mdev)) {
- _drbd_rs_pause(mdev);
- }
+ if (mdev->cstate == SyncTarget || mdev->cstate == SyncSource) {
+ _drbd_pause_higher_sg(mdev);
+ if(_drbd_lower_sg_running(mdev)) {
+ _drbd_rs_pause(mdev);
+ }
+ } /* else:
+ * thread of other mdev already paused us,
+ * or something very strange happend to our cstate!
+ * I really hate it that we can't have a consistent view of cstate.
+ * maybe we even need yet an other smp_mb() ?
+ */
drbd_global_unlock();
}
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.174
retrieving revision 1.73.2.175
diff -u -3 -r1.73.2.174 -r1.73.2.175
--- drbd_main.c 17 May 2004 12:55:32 -0000 1.73.2.174
+++ drbd_main.c 18 May 2004 09:00:20 -0000 1.73.2.175
@@ -413,8 +413,10 @@
os = mdev->cstate;
- /* INFO("%s [%d]: cstate %s --> %s\n", current->comm, current->pid,
- cstate_to_name(os), cstate_to_name(ns) );*/
+#if DUMP_MD > 1
+ INFO("%s [%d]: cstate %s(%d) --> %s(%d)\n", current->comm, current->pid,
+ cstate_to_name(os),os, cstate_to_name(ns),ns );
+#endif
mdev->cstate = ns;
smp_mb();
@@ -2229,7 +2231,7 @@
return 0;
}
-#ifdef DUMP_MD
+#if DUMP_MD
#define MeGC(x) mdev->gen_cnt[x]
#define PeGC(x) be32_to_cpu(peer->gen_cnt[x])
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_proc.c,v
retrieving revision 1.8.2.24
retrieving revision 1.8.2.25
diff -u -3 -r1.8.2.24 -r1.8.2.25
--- drbd_proc.c 5 May 2004 17:07:02 -0000 1.8.2.24
+++ drbd_proc.c 18 May 2004 09:00:20 -0000 1.8.2.25
@@ -146,7 +146,7 @@
};
return s < Unconfigured ? "TO_SMALL" :
- s > PausedSyncS ? "TO_LARGE"
+ s > PausedSyncT ? "TO_LARGE"
: cstate_names[s];
}