Skip to content

Commit 9cf2bab

Browse files
committed
block: kill request ->cpu member
This was used for completion placement for the legacy path, but for mq we have rq->mq_ctx->cpu for that. Add a helper to get the request CPU assignment, as the mq_ctx type is private to blk-mq. Reviewed-by: Omar Sandoval <osandov@fb.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent c7bb9ad commit 9cf2bab

File tree

9 files changed

+12
-23
lines changed

9 files changed

+12
-23
lines changed

block/blk-core.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ void blk_rq_init(struct request_queue *q, struct request *rq)
145145

146146
INIT_LIST_HEAD(&rq->queuelist);
147147
INIT_LIST_HEAD(&rq->timeout_list);
148-
rq->cpu = -1;
149148
rq->q = q;
150149
rq->__sector = (sector_t) -1;
151150
INIT_HLIST_NODE(&rq->hash);
@@ -1770,7 +1769,6 @@ EXPORT_SYMBOL_GPL(blk_rq_unprep_clone);
17701769
*/
17711770
static void __blk_rq_prep_clone(struct request *dst, struct request *src)
17721771
{
1773-
dst->cpu = src->cpu;
17741772
dst->__sector = blk_rq_pos(src);
17751773
dst->__data_len = blk_rq_bytes(src);
17761774
if (src->rq_flags & RQF_SPECIAL_PAYLOAD) {

block/blk-merge.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -806,8 +806,6 @@ static struct request *attempt_merge(struct request_queue *q,
806806
blk_account_io_merge(next);
807807

808808
req->ioprio = ioprio_best(req->ioprio, next->ioprio);
809-
if (blk_rq_cpu_valid(next))
810-
req->cpu = next->cpu;
811809

812810
/*
813811
* ownership of bio passed from next to req, return 'next' for

block/blk-mq.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,6 @@ static struct request *blk_mq_rq_ctx_init(struct blk_mq_alloc_data *data,
297297
rq->q = data->q;
298298
rq->mq_ctx = data->ctx;
299299
rq->rq_flags = rq_flags;
300-
rq->cpu = -1;
301300
rq->cmd_flags = op;
302301
if (data->flags & BLK_MQ_REQ_PREEMPT)
303302
rq->rq_flags |= RQF_PREEMPT;
@@ -3282,6 +3281,12 @@ static bool blk_mq_poll(struct request_queue *q, blk_qc_t cookie)
32823281
return __blk_mq_poll(hctx, rq);
32833282
}
32843283

3284+
unsigned int blk_mq_rq_cpu(struct request *rq)
3285+
{
3286+
return rq->mq_ctx->cpu;
3287+
}
3288+
EXPORT_SYMBOL(blk_mq_rq_cpu);
3289+
32853290
static int __init blk_mq_init(void)
32863291
{
32873292
cpuhp_setup_state_multi(CPUHP_BLK_MQ_DEAD, "block/mq:dead", NULL,

block/blk-softirq.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ static int blk_softirq_cpu_dead(unsigned int cpu)
9898
void __blk_complete_request(struct request *req)
9999
{
100100
struct request_queue *q = req->q;
101-
int cpu, ccpu = q->mq_ops ? req->mq_ctx->cpu : req->cpu;
101+
int cpu, ccpu = req->mq_ctx->cpu;
102102
unsigned long flags;
103103
bool shared = false;
104104

drivers/scsi/bnx2i/bnx2i_hwi.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1906,7 +1906,6 @@ static int bnx2i_queue_scsi_cmd_resp(struct iscsi_session *session,
19061906
struct iscsi_task *task;
19071907
struct scsi_cmnd *sc;
19081908
int rc = 0;
1909-
int cpu;
19101909

19111910
spin_lock(&session->back_lock);
19121911
task = iscsi_itt_to_task(bnx2i_conn->cls_conn->dd_data,
@@ -1917,14 +1916,9 @@ static int bnx2i_queue_scsi_cmd_resp(struct iscsi_session *session,
19171916
}
19181917
sc = task->sc;
19191918

1920-
if (!blk_rq_cpu_valid(sc->request))
1921-
cpu = smp_processor_id();
1922-
else
1923-
cpu = sc->request->cpu;
1924-
19251919
spin_unlock(&session->back_lock);
19261920

1927-
p = &per_cpu(bnx2i_percpu, cpu);
1921+
p = &per_cpu(bnx2i_percpu, blk_mq_rq_cpu(sc->request));
19281922
spin_lock(&p->p_work_lock);
19291923
if (unlikely(!p->iothread)) {
19301924
rc = -EINVAL;

drivers/scsi/csiostor/csio_scsi.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1780,16 +1780,10 @@ csio_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmnd)
17801780
int nsge = 0;
17811781
int rv = SCSI_MLQUEUE_HOST_BUSY, nr;
17821782
int retval;
1783-
int cpu;
17841783
struct csio_scsi_qset *sqset;
17851784
struct fc_rport *rport = starget_to_rport(scsi_target(cmnd->device));
17861785

1787-
if (!blk_rq_cpu_valid(cmnd->request))
1788-
cpu = smp_processor_id();
1789-
else
1790-
cpu = cmnd->request->cpu;
1791-
1792-
sqset = &hw->sqset[ln->portid][cpu];
1786+
sqset = &hw->sqset[ln->portid][blk_mq_rq_cpu(cmnd->request)];
17931787

17941788
nr = fc_remote_port_chkready(rport);
17951789
if (nr) {

drivers/scsi/qla2xxx/qla_os.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1460,7 +1460,7 @@ __qla2xxx_eh_generic_reset(char *name, enum nexus_wait_type type,
14601460
goto eh_reset_failed;
14611461
}
14621462
err = 2;
1463-
if (do_reset(fcport, cmd->device->lun, cmd->request->cpu + 1)
1463+
if (do_reset(fcport, cmd->device->lun, blk_mq_rq_cpu(cmd->request) + 1)
14641464
!= QLA_SUCCESS) {
14651465
ql_log(ql_log_warn, vha, 0x800c,
14661466
"do_reset failed for cmd=%p.\n", cmd);

include/linux/blk-mq.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,8 @@ void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues);
300300

301301
void blk_mq_quiesce_queue_nowait(struct request_queue *q);
302302

303+
unsigned int blk_mq_rq_cpu(struct request *rq);
304+
303305
/**
304306
* blk_mq_mark_complete() - Set request state to complete
305307
* @rq: request to set to complete state

include/linux/blkdev.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ struct request {
130130
struct request_queue *q;
131131
struct blk_mq_ctx *mq_ctx;
132132

133-
int cpu;
134133
unsigned int cmd_flags; /* op and common flags */
135134
req_flags_t rq_flags;
136135

@@ -669,7 +668,6 @@ static inline bool blk_account_rq(struct request *rq)
669668
return (rq->rq_flags & RQF_STARTED) && !blk_rq_is_passthrough(rq);
670669
}
671670

672-
#define blk_rq_cpu_valid(rq) ((rq)->cpu != -1)
673671
#define blk_bidi_rq(rq) ((rq)->next_rq != NULL)
674672

675673
#define list_entry_rq(ptr) list_entry((ptr), struct request, queuelist)

0 commit comments

Comments
 (0)