diff options
Diffstat (limited to 'drivers/md/bitmap.c')
| -rw-r--r-- | drivers/md/bitmap.c | 4 | 
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index 7878712721b..b6907118283 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c @@ -1106,10 +1106,12 @@ void bitmap_write_all(struct bitmap *bitmap)  	 */  	int i; +	spin_lock_irq(&bitmap->lock);  	for (i = 0; i < bitmap->file_pages; i++)  		set_page_attr(bitmap, bitmap->filemap[i],  			      BITMAP_PAGE_NEEDWRITE);  	bitmap->allclean = 0; +	spin_unlock_irq(&bitmap->lock);  }  static void bitmap_count_page(struct bitmap *bitmap, sector_t offset, int inc) @@ -1605,7 +1607,9 @@ void bitmap_dirty_bits(struct bitmap *bitmap, unsigned long s, unsigned long e)  	for (chunk = s; chunk <= e; chunk++) {  		sector_t sec = (sector_t)chunk << CHUNK_BLOCK_SHIFT(bitmap);  		bitmap_set_memory_bits(bitmap, sec, 1); +		spin_lock_irq(&bitmap->lock);  		bitmap_file_set_bit(bitmap, sec); +		spin_unlock_irq(&bitmap->lock);  		if (sec < bitmap->mddev->recovery_cp)  			/* We are asserting that the array is dirty,  			 * so move the recovery_cp address back so  |