[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