[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);