diff options
Diffstat (limited to 'drivers/md/bitmap.c')
-rw-r--r-- | drivers/md/bitmap.c | 17 |
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 | ||
1348 | int bitmap_start_sync(struct bitmap *bitmap, sector_t offset, int *blocks) | 1348 | int 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); |