[DRBD-cvs] DRBD CVS: drbd by phil from

drbd-cvs@linbit.com drbd-cvs@linbit.com
Mon, 12 Jan 2004 15:33:31 +0100 (CET)


DRBD CVS committal

Author  : phil
Host    : 
Module  : drbd

Dir     : drbd/drbd


Modified Files:
      Tag: rel-0_7-branch
	drbd_actlog.c drbd_main.c 


Log Message:
Output the "Recounting sectors (resync LRU too small?)" warning
only if it is true.

drbd_send_param() got the device size wrong if we have an internal
AL. FIXED.

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_actlog.c,v
retrieving revision 1.1.2.45
retrieving revision 1.1.2.46
diff -u -3 -r1.1.2.45 -r1.1.2.46
--- drbd_actlog.c	12 Jan 2004 10:46:42 -0000	1.1.2.45
+++ drbd_actlog.c	12 Jan 2004 14:33:31 -0000	1.1.2.46
@@ -513,7 +513,13 @@
 			ext->rs_left -= cleared;
 			D_ASSERT((long)ext->rs_left >= 0);
 		} else {
-			WARN("Recounting sectors (resync LRU too small?)\n");
+			if(mdev->cstate == SyncSource) {
+				WARN("Recounting sectors"
+				     " (resync LRU too small?)\n");
+				// On the SyncSource the element should be
+				// in the cache since drbd_rs_begin_io()
+				// pulled it already in.
+			}
 			ext->rs_left = bm_count_sectors(mdev->mbds_id,enr);
 			lc_changed(mdev->resync,(struct lc_element*)ext);
 		}
@@ -598,11 +604,14 @@
 	rs_flags=mdev->resync->flags;
 	spin_unlock_irq(&mdev->al_lock);
 
-	if (rs_flags & LC_STARVING) {
-		WARN("Have to wait for element (resync LRU too small?)\n");
-	}
-	if (rs_flags & LC_DIRTY) {
-		BUG(); // WARN("Ongoing RS update (???)\n");
+	if(!bm_ext) {
+		if (rs_flags & LC_STARVING) {
+			WARN("Have to wait for element"
+			     " (resync LRU too small?)\n");
+		}
+		if (rs_flags & LC_DIRTY) {
+			BUG(); // WARN("Ongoing RS update (???)\n");
+		}
 	}
 
 	return bm_ext;
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.90
retrieving revision 1.73.2.91
diff -u -3 -r1.73.2.90 -r1.73.2.91
--- drbd_main.c	12 Jan 2004 09:31:36 -0000	1.73.2.90
+++ drbd_main.c	12 Jan 2004 14:33:31 -0000	1.73.2.91
@@ -518,10 +518,17 @@
 	Drbd_Parameter_Packet p;
 	int ok,i;
 	kdev_t ll_dev = mdev->lo_device;
+	unsigned long m_size=0; // sector_t ??
+
+	if(ll_dev) {
+		m_size = blk_size[MAJOR(ll_dev)][MINOR(ll_dev)];
+		if( mdev->md_index == -1 ) {// internal metadata
+			m_size = m_size - MD_RESERVED_SIZE;
+		}
+	}
 
 	p.u_size = cpu_to_be64(mdev->lo_usize);
-	p.p_size = cpu_to_be64(ll_dev ?
-			       blk_size[MAJOR(ll_dev)][MINOR(ll_dev)]:0);
+	p.p_size = cpu_to_be64(m_size);
 
 	p.state    = cpu_to_be32(mdev->state);
 	p.protocol = cpu_to_be32(mdev->conf.wire_protocol);