aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/bitmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/bitmap.c')
-rw-r--r--drivers/md/bitmap.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 95980ad6b27b..70bca955e0de 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -108,7 +108,7 @@ static unsigned char *bitmap_alloc_page(struct bitmap *bitmap)
108{ 108{
109 unsigned char *page; 109 unsigned char *page;
110 110
111#if INJECT_FAULTS_1 111#ifdef INJECT_FAULTS_1
112 page = NULL; 112 page = NULL;
113#else 113#else
114 page = kmalloc(PAGE_SIZE, GFP_NOIO); 114 page = kmalloc(PAGE_SIZE, GFP_NOIO);
@@ -843,7 +843,7 @@ static int bitmap_init_from_disk(struct bitmap *bitmap, int in_sync)
843 843
844 BUG_ON(!file && !bitmap->offset); 844 BUG_ON(!file && !bitmap->offset);
845 845
846#if INJECT_FAULTS_3 846#ifdef INJECT_FAULTS_3
847 outofdate = 1; 847 outofdate = 1;
848#else 848#else
849 outofdate = bitmap->flags & BITMAP_STALE; 849 outofdate = bitmap->flags & BITMAP_STALE;
@@ -1187,7 +1187,7 @@ static int bitmap_start_daemon(struct bitmap *bitmap, mdk_thread_t **ptr,
1187 1187
1188 spin_unlock_irqrestore(&bitmap->lock, flags); 1188 spin_unlock_irqrestore(&bitmap->lock, flags);
1189 1189
1190#if INJECT_FATAL_FAULT_2 1190#ifdef INJECT_FATAL_FAULT_2
1191 daemon = NULL; 1191 daemon = NULL;
1192#else 1192#else
1193 sprintf(namebuf, "%%s_%s", name); 1193 sprintf(namebuf, "%%s_%s", name);
@@ -1345,7 +1345,8 @@ void bitmap_endwrite(struct bitmap *bitmap, sector_t offset, unsigned long secto
1345 } 1345 }
1346} 1346}
1347 1347
1348int bitmap_start_sync(struct bitmap *bitmap, sector_t offset, int *blocks) 1348int bitmap_start_sync(struct bitmap *bitmap, sector_t offset, int *blocks,
1349 int degraded)
1349{ 1350{
1350 bitmap_counter_t *bmc; 1351 bitmap_counter_t *bmc;
1351 int rv; 1352 int rv;
@@ -1362,8 +1363,10 @@ int bitmap_start_sync(struct bitmap *bitmap, sector_t offset, int *blocks)
1362 rv = 1; 1363 rv = 1;
1363 else if (NEEDED(*bmc)) { 1364 else if (NEEDED(*bmc)) {
1364 rv = 1; 1365 rv = 1;
1365 *bmc |= RESYNC_MASK; 1366 if (!degraded) { /* don't set/clear bits if degraded */
1366 *bmc &= ~NEEDED_MASK; 1367 *bmc |= RESYNC_MASK;
1368 *bmc &= ~NEEDED_MASK;
1369 }
1367 } 1370 }
1368 } 1371 }
1369 spin_unlock_irq(&bitmap->lock); 1372 spin_unlock_irq(&bitmap->lock);
@@ -1549,7 +1552,7 @@ int bitmap_create(mddev_t *mddev)
1549 1552
1550 bitmap->syncchunk = ~0UL; 1553 bitmap->syncchunk = ~0UL;
1551 1554
1552#if INJECT_FATAL_FAULT_1 1555#ifdef INJECT_FATAL_FAULT_1
1553 bitmap->bp = NULL; 1556 bitmap->bp = NULL;
1554#else 1557#else
1555 bitmap->bp = kmalloc(pages * sizeof(*bitmap->bp), GFP_KERNEL); 1558 bitmap->bp = kmalloc(pages * sizeof(*bitmap->bp), GFP_KERNEL);