[DRBD-cvs] svn commit by phil - r2116 - trunk/drbd - Shaked the bugs out. Async bitmap IO seems to work nice

drbd-cvs at lists.linbit.com drbd-cvs at lists.linbit.com
Mon Mar 13 13:10:04 CET 2006


Author: phil
Date: 2006-03-13 13:10:04 +0100 (Mon, 13 Mar 2006)
New Revision: 2116

Modified:
   trunk/drbd/drbd_bitmap.c
Log:
Shaked the bugs out. Async bitmap IO seems to work nicely now...


Modified: trunk/drbd/drbd_bitmap.c
===================================================================
--- trunk/drbd/drbd_bitmap.c	2006-03-12 21:01:35 UTC (rev 2115)
+++ trunk/drbd/drbd_bitmap.c	2006-03-13 12:10:04 UTC (rev 2116)
@@ -243,7 +243,10 @@
 	memset(b,0,sizeof(*b));
 	spin_lock_init(&b->bm_lock);
 	init_MUTEX(&b->bm_change);
+	init_waitqueue_head(&b->bm_io_wait);
+
 	mdev->bitmap = b;
+	
 	return 0;
 }
 
@@ -791,7 +794,11 @@
 
 void drbd_bm_read(struct Drbd_Conf *mdev)
 {
+	struct drbd_bitmap *b = mdev->bitmap;
+
 	drbd_bm_rw(mdev, READ);
+
+	b->bm[b->bm_words] = DRBD_MAGIC;
 }
 
 /**
@@ -842,20 +849,8 @@
  */
 void drbd_bm_write(struct Drbd_Conf *mdev)
 {
-	struct drbd_bitmap *b = mdev->bitmap;
-	sector_t sector;
-	int bm_words, num_sectors;
+	drbd_bm_rw(mdev, WRITE);
 
-	MUST_BE_LOCKED();
-
-	bm_words    = drbd_bm_words(mdev);
-	num_sectors = (bm_words*sizeof(long) + 511) >> 9;
-
-	for (sector = 0; sector < num_sectors; sector++) {
-		// FIXME do something on io error here?
-		drbd_bm_write_sect(mdev,sector);
-	}
-
 	INFO("%lu KB now marked out-of-sync by on disk bit-map.\n",
 	      drbd_bm_total_weight(mdev) << (BM_BLOCK_SIZE_B-10) );
 }



More information about the drbd-cvs mailing list