[prev in list] [next in list] [prev in thread] [next in thread] 

List:       drbd-cvs
Subject:    [DRBD-cvs] drbd by lars; * no more "kupdate submitting !uptodate ...
From:       drbd-cvs () linbit ! com
Date:       2004-04-30 9:47:03
Message-ID: 20040430094703.6053215DF5E () garcon ! linbit ! com
[Download RAW message or body]

DRBD CVS committal

Author  : lars
Module  : drbd

Dir     : drbd/drbd


Modified Files:
      Tag: rel-0_7-branch
	drbd_compat_wrappers.h drbd_main.c drbd_receiver.c 


Log Message:
* no more "kupdate submitting !uptodate buffers", thats not our business

* remove anoying INFO("unplug")
  sorry, leftover from my last debug session.

* more detailed info about unexpected values on Unconfigure

* want to see the generation counters upon connect

* going StandAlone when already Primary, but we decide to
  become SyncTarget on connect.
  ToDo: panic on connection loss when INCONSITENT|DISKLESS 

* another FIXME comment

* missing part from drbdsetup (ERR == ENODATA)

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_compat_wrappers.h,v
retrieving revision 1.1.2.39
retrieving revision 1.1.2.40
diff -u -3 -r1.1.2.39 -r1.1.2.40
--- drbd_compat_wrappers.h	29 Apr 2004 14:43:26 -0000	1.1.2.39
+++ drbd_compat_wrappers.h	30 Apr 2004 09:46:57 -0000	1.1.2.40
@@ -185,11 +185,13 @@
 	D_ASSERT(buffer_locked(bh));
 	D_ASSERT(buffer_mapped(bh));
 	// D_ASSERT(buffer_dirty(bh)); // It is not true ?!?
+	/* kupdated keeps submitting "non-uptodate" buffers.
 	ERR_IF (!buffer_uptodate(bh)) {
 		ERR("[%s/%d]: bh_src->b_state=%lx bh->b_state=%lx\n",
 		    current->comm, current->pid,
 		    bh_src->b_state, bh->b_state);
 	};
+	*/
 
 	// FIXME should not be necessary;
 	// remove if the assertions above do not trigger.
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.157
retrieving revision 1.73.2.158
diff -u -3 -r1.73.2.157 -r1.73.2.158
--- drbd_main.c	29 Apr 2004 14:43:26 -0000	1.73.2.157
+++ drbd_main.c	30 Apr 2004 09:46:57 -0000	1.73.2.158
@@ -461,6 +461,7 @@
 void _drbd_thread_stop(struct Drbd_thread *thi, int restart,int wait)
 {
 	if (!thi->task) return;
+	/* test on ->state useless now since we use reparent_to_init */
 	if (thi->task->state == -1
 	    || thi->task->state == TASK_ZOMBIE
 	    || thi->task->flags & PF_EXITING   ) {
@@ -1050,7 +1051,6 @@
 #endif
 	drbd_dev *mdev = q->queuedata;
 
-	INFO("%s [%d]: unplug\n",current->comm, current->pid);
 	/* unplug FIRST */
 	spin_lock_irq(q->queue_lock);
 	blk_remove_plug(q);
@@ -1190,9 +1190,11 @@
 	 * oldest_barrier
 	 */
 
-	D_ASSERT(mdev->ee_in_use==0);
-	D_ASSERT(mdev->ee_vacant==32 /*EE_MININUM*/);
-	D_ASSERT(mdev->epoch_size==0);
+	if (   mdev->ee_in_use  !=  0
+	    || mdev->ee_vacant  != 32 /* EE_MININUM */
+	    || mdev->epoch_size !=  0)
+		ERR("ee_in_use:%d ee_vacant:%d epoch_size:%d\n",
+		    mdev->ee_in_use, mdev->ee_vacant, mdev->epoch_size);
 #define ZAP(x) memset(&x,0,sizeof(x))
 	ZAP(mdev->conf);
 	ZAP(mdev->sync_conf);
@@ -1406,6 +1408,8 @@
 	SZO(struct buffer_head);
 	SZO(Drbd_Polymorph_Packet);
 	SZO(struct drbd_socket);
+	SZO(struct bm_extent);
+	SZO(struct lc_element);
 	SZO(struct semaphore);
 	SZO(wait_queue_head_t);
 	SZO(spinlock_t);
@@ -2108,13 +2112,14 @@
 	return 0;
 }
 
-#if 0
+#if 1
 #define MeGC(x) mdev->gen_cnt[x]
 #define PeGC(x) be32_to_cpu(peer->gen_cnt[x])
 
 void drbd_dump_md(drbd_dev *mdev, Drbd_Parameter_Packet *peer, int verbose)
 {
-	INFO("MeGCs: %c:%08x:%08x:%08x:%08x:%c%c\n",
+	INFO("I am(%c): %c:%08x:%08x:%08x:%08x:%c%c\n",
+		mdev->state == Primary ? 'P':'S',
 		MeGC(Flags) & MDF_Consistent ? '1' : '0',
 		MeGC(HumanCnt),
 		MeGC(TimeoutCnt),
@@ -2123,7 +2128,8 @@
 		MeGC(Flags) & MDF_PrimaryInd   ? '1' : '0',
 		MeGC(Flags) & MDF_ConnectedInd ? '1' : '0');
 	if (peer) {
-		INFO("PeGCs: %c:%08x:%08x:%08x:%08x:%c%c\n",
+		INFO("Peer(%c): %c:%08x:%08x:%08x:%08x:%c%c\n",
+			be32_to_cpu(peer->state) == Primary ? 'P':'S',
 			PeGC(Flags) & MDF_Consistent ? '1' : '0',
 			PeGC(HumanCnt),
 			PeGC(TimeoutCnt),
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_receiver.c,v
retrieving revision 1.97.2.135
retrieving revision 1.97.2.136
diff -u -3 -r1.97.2.135 -r1.97.2.136
--- drbd_receiver.c	29 Apr 2004 14:43:27 -0000	1.97.2.135
+++ drbd_receiver.c	30 Apr 2004 09:46:57 -0000	1.97.2.136
@@ -1201,7 +1201,10 @@
 /*
 	FIXME
 */
-					WARN("Current Primary becomming sync TARGET! Data corruption in progress?\n");
+					ERR("Current Primary shall become sync TARGET! Aborting to prevent data corruption.\n");
+					set_cstate(mdev,StandAlone);
+					mdev->receiver.t_state = Exiting;
+					return FALSE;
 				}
 				mdev->gen_cnt[Flags] &= ~MDF_Consistent;
 				set_cstate(mdev,WFBitMapT);
@@ -1296,6 +1299,10 @@
 	}
 
 	// We just started resync. Now we can be sure that local disk IO is okay.
+/*
+ *  FIXME this should only be D_ASSERT here.
+ *        *doing* it here masks a logic bug elsewhere, I think.
+ */
 	clear_bit(PARTNER_DISKLESS,&mdev->flags);
 	clear_bit(DISKLESS,&mdev->flags);
 	smp_wmb();
@@ -1351,8 +1358,7 @@
 	while (size > 0) {
 		want = min_t(int,size,sizeof(sink));
 		r = drbd_recv(mdev,sink,want);
-		D_ASSERT(r >= 0);
-		if (r < 0) break;
+		ERR_IF(r < 0) break;
 		size -= r;
 	}
 	return (size == 0);



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic