X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=drivers%2Fmd%2Fraid1.c;h=e2466425d9cad798edf40858183404408b319e3d;hb=7df4edb07cf54a4868b9a750424c0d2aa68f8d66;hp=7b4f5f7155d8726705c1f42757f68dd1de869624;hpb=e4f722fa42537bcb0ff14322a57dc3870d093cab;p=linux-2.6-omap-h63xx.git diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 7b4f5f7155d..e2466425d9c 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),