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) ...@@ -2121,11 +2121,14 @@ static int __make_request(request_queue_t *q, struct bio *bio)
goto again; goto again;
} }
req->flags |= REQ_CMD;
/* /*
* first three bits are identical in rq->flags and bio->bi_rw, * inherit FAILFAST from bio and don't stack up
* see bio.h and blkdev.h * 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 * 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) ...@@ -2133,12 +2136,6 @@ static int __make_request(request_queue_t *q, struct bio *bio)
if (barrier) if (barrier)
req->flags |= (REQ_HARDBARRIER | REQ_NOMERGE); req->flags |= (REQ_HARDBARRIER | REQ_NOMERGE);
/*
* don't stack up retries for read ahead
*/
if (ra)
req->flags |= REQ_FAILFAST;
req->errors = 0; req->errors = 0;
req->hard_sector = req->sector = sector; req->hard_sector = req->sector = sector;
req->hard_nr_sectors = req->nr_sectors = nr_sectors; 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