lkml.org 
[lkml]   [2004]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] set request fastfail bit
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. The attached patch (built against 2.6.4-rc3)
sets the request's failfast flag in __make_request when the bio's
flag is set.

Mike Chrisite
--- linux-2.6.4-rc3-orig/drivers/block/ll_rw_blk.c 2004-03-09 22:21:26.819208694 -0800
+++ linux-2.6.4-rc3-ff/drivers/block/ll_rw_blk.c 2004-03-09 22:37:02.395169904 -0800
@@ -2121,11 +2121,14 @@ get_rq:
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 @@ get_rq:
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;
\
 
 \ /
  Last update: 2005-03-22 14:01    [W:0.114 / U:0.028 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site