]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[PATCH] md: make 'repair' actually work for raid1.
authorNeilBrown <neilb@suse.de>
Thu, 25 Jan 2007 04:35:25 +0000 (15:35 +1100)
committerChris Wright <chrisw@sous-sol.org>
Mon, 5 Feb 2007 16:31:43 +0000 (08:31 -0800)
When 'repair' finds a block that is different one the various
parts of the mirror. it is meant to write a chosen good version
to the others.  However it currently writes out the original data
to each. The memcpy to make all the data the same is missing.

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
drivers/md/raid1.c

index 99d453fd71622d374fc0a1f5305da3452a1c39a3..77b19b4d0a116df3b4e9279d8978d8fa72ef1970 100644 (file)
@@ -1266,6 +1266,11 @@ static void sync_request_write(mddev_t *mddev, r1bio_t *r1_bio)
                                        sbio->bi_sector = r1_bio->sector +
                                                conf->mirrors[i].rdev->data_offset;
                                        sbio->bi_bdev = conf->mirrors[i].rdev->bdev;
+                                       for (j = 0; j < vcnt ; j++)
+                                               memcpy(page_address(sbio->bi_io_vec[j].bv_page),
+                                                      page_address(pbio->bi_io_vec[j].bv_page),
+                                                      PAGE_SIZE);
+
                                }
                        }
        }