diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/md/bitmap.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index 2e2f53cd5b21..7c3c1c58ff1b 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c | |||
@@ -844,7 +844,7 @@ static void bitmap_file_set_bit(struct bitmap *bitmap, sector_t block) | |||
844 | if (test_bit(BITMAP_HOSTENDIAN, &bitmap->flags)) | 844 | if (test_bit(BITMAP_HOSTENDIAN, &bitmap->flags)) |
845 | set_bit(bit, kaddr); | 845 | set_bit(bit, kaddr); |
846 | else | 846 | else |
847 | __set_bit_le(bit, kaddr); | 847 | test_and_set_bit_le(bit, kaddr); |
848 | kunmap_atomic(kaddr); | 848 | kunmap_atomic(kaddr); |
849 | pr_debug("set file bit %lu page %lu\n", bit, page->index); | 849 | pr_debug("set file bit %lu page %lu\n", bit, page->index); |
850 | /* record page number so it gets flushed to disk when unplug occurs */ | 850 | /* record page number so it gets flushed to disk when unplug occurs */ |
@@ -866,7 +866,7 @@ static void bitmap_file_clear_bit(struct bitmap *bitmap, sector_t block) | |||
866 | if (test_bit(BITMAP_HOSTENDIAN, &bitmap->flags)) | 866 | if (test_bit(BITMAP_HOSTENDIAN, &bitmap->flags)) |
867 | clear_bit(bit, paddr); | 867 | clear_bit(bit, paddr); |
868 | else | 868 | else |
869 | __clear_bit_le(bit, paddr); | 869 | test_and_clear_bit_le(bit, paddr); |
870 | kunmap_atomic(paddr); | 870 | kunmap_atomic(paddr); |
871 | if (!test_page_attr(bitmap, page->index, BITMAP_PAGE_NEEDWRITE)) { | 871 | if (!test_page_attr(bitmap, page->index, BITMAP_PAGE_NEEDWRITE)) { |
872 | set_page_attr(bitmap, page->index, BITMAP_PAGE_PENDING); | 872 | set_page_attr(bitmap, page->index, BITMAP_PAGE_PENDING); |
@@ -1536,9 +1536,7 @@ void bitmap_dirty_bits(struct bitmap *bitmap, unsigned long s, unsigned long e) | |||
1536 | for (chunk = s; chunk <= e; chunk++) { | 1536 | for (chunk = s; chunk <= e; chunk++) { |
1537 | sector_t sec = (sector_t)chunk << bitmap->chunkshift; | 1537 | sector_t sec = (sector_t)chunk << bitmap->chunkshift; |
1538 | bitmap_set_memory_bits(bitmap, sec, 1); | 1538 | bitmap_set_memory_bits(bitmap, sec, 1); |
1539 | spin_lock_irq(&bitmap->lock); | ||
1540 | bitmap_file_set_bit(bitmap, sec); | 1539 | bitmap_file_set_bit(bitmap, sec); |
1541 | spin_unlock_irq(&bitmap->lock); | ||
1542 | if (sec < bitmap->mddev->recovery_cp) | 1540 | if (sec < bitmap->mddev->recovery_cp) |
1543 | /* We are asserting that the array is dirty, | 1541 | /* We are asserting that the array is dirty, |
1544 | * so move the recovery_cp address back so | 1542 | * so move the recovery_cp address back so |