+++ /dev/null
-From d0a4bb492772ce5c4bdfba3744a99ed6f6fb238f Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb@suse.de>
-Date: Tue, 31 Mar 2009 14:27:02 +1100
-Subject: [PATCH] md: never clear bit from the write-intent bitmap when the array is degraded.
-
-It is safe to clear a bit from the write-intent bitmap for a raid1
-if we know the data has been written to all devices, which is
-what the current test does.
-
-But it is not always safe to update the 'events_cleared' counter in
-that case. This is because one request could complete successfully
-after some other request has partially failed.
-
-So simply disable the clearing and updating of events_cleared whenever
-the array is degraded. This might end up not clearing some bits that
-could safely be cleared, but it is safest approach.
-
-Note that the bug fixed here did not risk corrupting data by letting
-the array get out-of-sync. Rather it meant that when a device is
-removed and re-added to the array, it might incorrectly require a full
-recovery rather than just recovering based on the bitmap.
-
-Signed-off-by: NeilBrown <neilb@suse.de>
----
- drivers/md/bitmap.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/drivers/md/bitmap.c
-+++ b/drivers/md/bitmap.c
-@@ -1307,6 +1307,9 @@ void bitmap_endwrite(struct bitmap *bitm
- PRINTK(KERN_DEBUG "dec write-behind count %d/%d\n",
- atomic_read(&bitmap->behind_writes), bitmap->max_write_behind);
- }
-+ if (bitmap->mddev->degraded)
-+ /* Never clear bits or update events_cleared when degraded */
-+ success = 0;
-
- while (sectors) {
- int blocks;