Messages in this thread | | | Date | Thu, 17 Aug 2006 17:27:52 -0500 | From | Matt Domsch <> | Subject | rq_flag_bits and bio bi_rw flags |
| |
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?
Thanks, Matt
-- Matt Domsch Software Architect Dell Linux Solutions linux.dell.com & www.dell.com/linux Linux on Dell mailing lists @ http://lists.us.dell.com - 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/
| |