diff options
| author | 2009-03-11 10:49:34 +0100 | |
|---|---|---|
| committer | 2009-03-11 10:49:34 +0100 | |
| commit | d95c3578120e5bc4784069439f00ccb1b5f87717 (patch) | |
| tree | c819de31de3983f3d69f223ede07667ff23bf7da /drivers/md/raid1.c | |
| parent | fix warning in arch/x86/kernel/cpu/intel_cacheinfo.c (diff) | |
| parent | Merge branches 'x86/cleanups', 'x86/kexec', 'x86/mce2' and 'linus' into x86/core (diff) | |
| download | wireguard-linux-d95c3578120e5bc4784069439f00ccb1b5f87717.tar.xz wireguard-linux-d95c3578120e5bc4784069439f00ccb1b5f87717.zip | |
Merge branch 'x86/core' into cpus4096
Diffstat (limited to 'drivers/md/raid1.c')
| -rw-r--r-- | drivers/md/raid1.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 7b4f5f7155d8..e2466425d9ca 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -1237,8 +1237,9 @@ static void end_sync_write(struct bio *bio, int error) update_head_pos(mirror, r1_bio); if (atomic_dec_and_test(&r1_bio->remaining)) { - md_done_sync(mddev, r1_bio->sectors, uptodate); + sector_t s = r1_bio->sectors; put_buf(r1_bio); + md_done_sync(mddev, s, uptodate); } } @@ -1640,7 +1641,8 @@ static void raid1d(mddev_t *mddev) } bio = r1_bio->bios[r1_bio->read_disk]; - if ((disk=read_balance(conf, r1_bio)) == -1) { + if ((disk=read_balance(conf, r1_bio)) == -1 || + disk == r1_bio->read_disk) { printk(KERN_ALERT "raid1: %s: unrecoverable I/O" " read error for block %llu\n", bdevname(bio->bi_bdev,b), |
