Revert "block: remove the ioprio field from struct request"
This reverts commit ed7535b141 which is
commit 6975c1a486a40446b5bc77a89d9c520f8296fd08 upstream.
It breaks the Android kernel abi and can be brought back in the future
in an abi-safe way if it is really needed.
Bug: 161946584
Change-Id: Id4baa489cc433ca9c984bb37e693364df3c6ed6a
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -834,10 +834,11 @@ static struct request *attempt_merge(struct request_queue *q,
|
||||
/* Don't merge requests with different write hints. */
|
||||
if (req->bio->bi_write_hint != next->bio->bi_write_hint)
|
||||
return NULL;
|
||||
if (req->bio->bi_ioprio != next->bio->bi_ioprio)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (req->ioprio != next->ioprio)
|
||||
return NULL;
|
||||
|
||||
if (!blk_atomic_write_mergeable_rqs(req, next))
|
||||
return NULL;
|
||||
|
||||
@@ -969,10 +970,11 @@ bool blk_rq_merge_ok(struct request *rq, struct bio *bio)
|
||||
/* Don't merge requests with different write hints. */
|
||||
if (rq->bio->bi_write_hint != bio->bi_write_hint)
|
||||
return false;
|
||||
if (rq->bio->bi_ioprio != bio->bi_ioprio)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (rq->ioprio != bio_prio(bio))
|
||||
return false;
|
||||
|
||||
if (blk_atomic_write_mergeable_rq_bio(rq, bio) == false)
|
||||
return false;
|
||||
|
||||
|
||||
@@ -876,7 +876,7 @@ static void blk_print_req_error(struct request *req, blk_status_t status)
|
||||
blk_op_str(req_op(req)),
|
||||
(__force u32)(req->cmd_flags & ~REQ_OP_MASK),
|
||||
req->nr_phys_segments,
|
||||
IOPRIO_PRIO_CLASS(req_get_ioprio(req)));
|
||||
IOPRIO_PRIO_CLASS(req->ioprio));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3330,6 +3330,7 @@ int blk_rq_prep_clone(struct request *rq, struct request *rq_src,
|
||||
rq->special_vec = rq_src->special_vec;
|
||||
}
|
||||
rq->nr_phys_segments = rq_src->nr_phys_segments;
|
||||
rq->ioprio = rq_src->ioprio;
|
||||
|
||||
if (rq->bio && blk_crypto_rq_bio_prep(rq, rq->bio, gfp_mask) < 0)
|
||||
goto free_and_out;
|
||||
|
||||
@@ -157,6 +157,8 @@ struct request {
|
||||
struct blk_crypto_keyslot *crypt_keyslot;
|
||||
#endif
|
||||
|
||||
unsigned short ioprio;
|
||||
|
||||
enum mq_rq_state state;
|
||||
atomic_t ref;
|
||||
|
||||
@@ -223,9 +225,7 @@ static inline bool blk_rq_is_passthrough(struct request *rq)
|
||||
|
||||
static inline unsigned short req_get_ioprio(struct request *req)
|
||||
{
|
||||
if (req->bio)
|
||||
return req->bio->bi_ioprio;
|
||||
return 0;
|
||||
return req->ioprio;
|
||||
}
|
||||
|
||||
#define rq_data_dir(rq) (op_is_write(req_op(rq)) ? WRITE : READ)
|
||||
@@ -1018,6 +1018,7 @@ static inline void blk_rq_bio_prep(struct request *rq, struct bio *bio,
|
||||
rq->nr_phys_segments = nr_segs;
|
||||
rq->__data_len = bio->bi_iter.bi_size;
|
||||
rq->bio = rq->biotail = bio;
|
||||
rq->ioprio = bio_prio(bio);
|
||||
}
|
||||
|
||||
void blk_mq_hctx_set_fq_lock_class(struct blk_mq_hw_ctx *hctx,
|
||||
|
||||
@@ -99,7 +99,7 @@ TRACE_EVENT(block_rq_requeue,
|
||||
__entry->dev = rq->q->disk ? disk_devt(rq->q->disk) : 0;
|
||||
__entry->sector = blk_rq_trace_sector(rq);
|
||||
__entry->nr_sector = blk_rq_trace_nr_sectors(rq);
|
||||
__entry->ioprio = req_get_ioprio(rq);
|
||||
__entry->ioprio = rq->ioprio;
|
||||
|
||||
blk_fill_rwbs(__entry->rwbs, rq->cmd_flags);
|
||||
__get_str(cmd)[0] = '\0';
|
||||
@@ -136,7 +136,7 @@ DECLARE_EVENT_CLASS(block_rq_completion,
|
||||
__entry->sector = blk_rq_pos(rq);
|
||||
__entry->nr_sector = nr_bytes >> 9;
|
||||
__entry->error = blk_status_to_errno(error);
|
||||
__entry->ioprio = req_get_ioprio(rq);
|
||||
__entry->ioprio = rq->ioprio;
|
||||
|
||||
blk_fill_rwbs(__entry->rwbs, rq->cmd_flags);
|
||||
__get_str(cmd)[0] = '\0';
|
||||
@@ -209,7 +209,7 @@ DECLARE_EVENT_CLASS(block_rq,
|
||||
__entry->sector = blk_rq_trace_sector(rq);
|
||||
__entry->nr_sector = blk_rq_trace_nr_sectors(rq);
|
||||
__entry->bytes = blk_rq_bytes(rq);
|
||||
__entry->ioprio = req_get_ioprio(rq);
|
||||
__entry->ioprio = rq->ioprio;
|
||||
|
||||
blk_fill_rwbs(__entry->rwbs, rq->cmd_flags);
|
||||
__get_str(cmd)[0] = '\0';
|
||||
|
||||
Reference in New Issue
Block a user