Index: linux-2.6.22.14/drivers/md/raid5.c =================================================================== --- linux-2.6.22.14.orig/drivers/md/raid5.c +++ linux-2.6.22.14/drivers/md/raid5.c @@ -1268,6 +1268,8 @@ static int add_stripe_bio(struct stripe_ bi->bi_next = *bip; *bip = bi; bi->bi_phys_segments ++; + if (bio_sync(bi) && !forwrite) + clear_bit(R5_UPTODATE, &sh->dev[dd_idx].flags); /* force to read from disk. */ spin_unlock_irq(&conf->device_lock); spin_unlock(&sh->lock); @@ -2972,6 +2974,8 @@ static int make_request(request_queue_t test_bit(BIO_UPTODATE, &bi->bi_flags) ? 0 : -EIO); } + if (bio_sync(bi)) + raid5_unplug_device(q); return 0; }