diff --git a/block/blk-core.c b/block/blk-core.c index c89883b..9b11aea 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -163,8 +163,18 @@ static void req_bio_endio(struct request *rq, struct bio *bio, if (bio_integrity(bio)) bio_integrity_advance(bio, nbytes); - if (bio->bi_size == 0) + if (bio->bi_size == 0) { + static unsigned cnt; + if (bio_rw_ahead(bio) && !error && !(++cnt % 40)) { + printk("XXX %s: failing readahead bio, " + "sec=%llu f=0x%lx rw=0x%lx\n", + rq->rq_disk ? rq->rq_disk->disk_name : "?", + (unsigned long long)bio->bi_sector, + bio->bi_flags, bio->bi_rw); + error = -EIO; + } bio_endio(bio, error); + } } else { /*