Messages in this thread | | | Date | Fri, 18 Aug 2006 08:30:13 +0200 | From | Jens Axboe <> | Subject | Re: rq_flag_bits and bio bi_rw flags |
| |
On Thu, Aug 17 2006, Matt Domsch wrote: > Jens, I'm hoping you can clear something up for me. > > ll_rw_blk.c: > void blk_rq_bio_prep(request_queue_t *q, struct request *rq, struct > bio *bio) > { > /* first three bits are identical in rq->flags and bio->bi_rw > */ > rq->flags |= (bio->bi_rw & 7); > > That was recently changed to be the first 2 bits not 3. But it made > me look. > > /* > * bio bi_rw flags > * > * bit 0 -- read (not set) or write (set) > * bit 1 -- rw-ahead when set > * bit 2 -- barrier > * bit 3 -- fail fast, don't want low level driver retries > * bit 4 -- synchronous I/O hint: the block layer will unplug immediately > */ > #define BIO_RW 0 > #define BIO_RW_AHEAD 1 > #define BIO_RW_BARRIER 2 > #define BIO_RW_FAILFAST 3 > #define BIO_RW_SYNC 4 > > > /* > * first three bits match BIO_RW* bits, important > */ > enum rq_flag_bits { > __REQ_RW, /* not set, read. set, write */ > __REQ_FAILFAST, /* no low level driver retries */ > __REQ_SORTED, /* elevator knows about this request > */ > > > The first bit matches. The second doesn't (BIO_RW_AHEAD vs > __REQ_FAILFAST). And obviously you just fixed the third bit. > > Should BIO_RW_FAILFAST == __REQ_FAILFAST instead?
It does match, a rw-ahead request implies fail fast since we don't want to be retrying read-head type IO. Could do with a better comment though, but it's fully on purpose.
-- Jens Axboe
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |