Commit 1959d21232931dfa686769a21161413f10d6652f

Authored by Jens Axboe
1 parent 40359ccb83

[PATCH] Only the first two bits in bio->bi_rw and rq->flags match

Not three, as assumed. This causes the barrier bit to be needlessly set
for some IO.

Signed-off-by: Jens Axboe <axboe@suse.de>

Showing 2 changed files with 3 additions and 3 deletions Side-by-side Diff

... ... @@ -3491,8 +3491,8 @@
3491 3491  
3492 3492 void blk_rq_bio_prep(request_queue_t *q, struct request *rq, struct bio *bio)
3493 3493 {
3494   - /* first three bits are identical in rq->flags and bio->bi_rw */
3495   - rq->flags |= (bio->bi_rw & 7);
  3494 + /* first two bits are identical in rq->flags and bio->bi_rw */
  3495 + rq->flags |= (bio->bi_rw & 3);
3496 3496  
3497 3497 rq->nr_phys_segments = bio_phys_segments(q, bio);
3498 3498 rq->nr_hw_segments = bio_hw_segments(q, bio);
include/linux/blktrace_api.h
... ... @@ -148,7 +148,7 @@
148 148 u32 what)
149 149 {
150 150 struct blk_trace *bt = q->blk_trace;
151   - int rw = rq->flags & 0x07;
  151 + int rw = rq->flags & 0x03;
152 152  
153 153 if (likely(!bt))
154 154 return;