Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1959d212 authored by Jens Axboe's avatar Jens Axboe
Browse files

[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: default avatarJens Axboe <axboe@suse.de>
parent 40359ccb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3491,8 +3491,8 @@ EXPORT_SYMBOL(end_request);

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);
	/* first two bits are identical in rq->flags and bio->bi_rw */
	rq->flags |= (bio->bi_rw & 3);

	rq->nr_phys_segments = bio_phys_segments(q, bio);
	rq->nr_hw_segments = bio_hw_segments(q, bio);
+1 −1
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ static inline void blk_add_trace_rq(struct request_queue *q, struct request *rq,
				    u32 what)
{
	struct blk_trace *bt = q->blk_trace;
	int rw = rq->flags & 0x07;
	int rw = rq->flags & 0x03;

	if (likely(!bt))
		return;