Commit c5046934 authored by Jens Axboe's avatar Jens Axboe Committed by Linus Torvalds

[PATCH] set request fastfail bit correctly

From Mike Christie <michaelc@cs.wisc.edu>

The first three bio and request flags are no longer identical.  The bio
barrier and rw flags are getting set in __make_request and get_request
respectively, and failfast is getting left out.

This sets the request's failfast flag in __make_request when the bio's
flag is set.
parent c5e296f5
......@@ -2121,11 +2121,14 @@ static int __make_request(request_queue_t *q, struct bio *bio)
goto again;
}
req->flags |= REQ_CMD;
/*
* first three bits are identical in rq->flags and bio->bi_rw,
* see bio.h and blkdev.h
* inherit FAILFAST from bio and don't stack up
* retries for read ahead
*/
req->flags = (bio->bi_rw & 7) | REQ_CMD;
if (ra || test_bit(BIO_RW_FAILFAST, &bio->bi_rw))
req->flags |= REQ_FAILFAST;
/*
* REQ_BARRIER implies no merging, but lets make it explicit
......@@ -2133,12 +2136,6 @@ static int __make_request(request_queue_t *q, struct bio *bio)
if (barrier)
req->flags |= (REQ_HARDBARRIER | REQ_NOMERGE);
/*
* don't stack up retries for read ahead
*/
if (ra)
req->flags |= REQ_FAILFAST;
req->errors = 0;
req->hard_sector = req->sector = sector;
req->hard_nr_sectors = req->nr_sectors = nr_sectors;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment