From: Christoph Hellwig <hch@lst.de>
To: Hannes Reinecke <hare@suse.de>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>,
James Bottomley <james.bottomley@hansenpartnership.com>,
Christoph Hellwig <hch@lst.de>,
linux-scsi@vger.kernel.org,
Sathya Prakash <sathya.prakash@broadcom.com>,
Kashyap Desai <kashyap.desai@broadcom.com>,
mpt-fusionlinux.pdl@broadcom.com, Hannes Reinecke <hare@suse.com>
Subject: Re: [PATCH 08/10] mpt3sas: lockless command submission for scsi-mq
Date: Tue, 31 Jan 2017 14:22:06 +0100 [thread overview]
Message-ID: <20170131132206.GA5686@lst.de> (raw)
In-Reply-To: <1485854760-122683-9-git-send-email-hare@suse.de>
On Tue, Jan 31, 2017 at 10:25:58AM +0100, Hannes Reinecke wrote:
> Enable lockless command submission for scsi-mq by moving the
> command structure into the payload for struct request.
We support cmd_size for both the mq and !mq code path, so this
could be simplified by always taking your new block-mq path.
> 4 files changed, 427 insertions(+), 57 deletions(-)
The amount of new code scare me. Especially compared to the very
shport changelog.
> diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
> index 942fb7e..29e139f 100644
> --- a/drivers/scsi/mpt3sas/mpt3sas_base.c
> +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
> @@ -867,6 +867,20 @@ struct scsiio_tracker *
> {
> WARN_ON(!smid);
> WARN_ON(smid >= ioc->hi_priority_smid);
> + if (shost_use_blk_mq(ioc->shost)) {
> + u16 hwq = (smid - 1) % ioc->shost->nr_hw_queues;
> + u16 tag = (smid - 1) / ioc->shost->nr_hw_queues;
> + struct blk_mq_tag_set *tagset = &ioc->shost->tag_set;
> + struct request *req;
> +
> + req = blk_mq_tag_to_rq(tagset->tags[hwq], tag);
> + if (req) {
> + struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(req);
> +
> + return scsi_cmd_priv(cmd);
> + } else
> + return NULL;
> + }
This looks like it basically duplicates scsi_host_find_tag().
> + if (shost_use_blk_mq(ioc->shost)) {
> + unsigned int unique_tag = blk_mq_unique_tag(scmd->request);
> + u16 hwq = blk_mq_unique_tag_to_hwq(unique_tag);
> + u16 tag = blk_mq_unique_tag_to_tag(unique_tag);
> + u16 smid = (tag * ioc->shost->nr_hw_queues) + hwq + 1;
> +
> + request = scsi_cmd_priv(scmd);
> + request->scmd = scmd;
no need for a backpointer, blk_mq_rq_from_pdu gets your
back to the request, and scsi_cmd_priv back to driver private data.
> + request->cb_idx = cb_idx;
> + request->msix_io = hwq;
> + request->smid = smid;
why do we need to store the smid?
> @@ -562,12 +642,7 @@ enum block_state {
> _ctl_set_task_mid(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command *karg,
I think this function just needs to go away instantly.
Trying to send task management requests from userspace for any
active smid is plain dangerous.
next prev parent reply other threads:[~2017-01-31 13:23 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-31 9:25 [PATCH 00/10] mpt3sas: full mq support Hannes Reinecke
2017-01-31 9:25 ` [PATCH 01/10] mpt3sas: switch to pci_alloc_irq_vectors Hannes Reinecke
2017-02-07 13:15 ` Christoph Hellwig
2017-02-16 9:32 ` Sreekanth Reddy
2017-02-16 10:01 ` Hannes Reinecke
2017-01-31 9:25 ` [PATCH 02/10] mpt3sas: set default value for cb_idx Hannes Reinecke
2017-02-07 13:15 ` Christoph Hellwig
2017-01-31 9:25 ` [PATCH 03/10] mpt3sas: implement _dechain_st() Hannes Reinecke
2017-02-07 13:15 ` Christoph Hellwig
2017-02-07 13:18 ` Hannes Reinecke
2017-01-31 9:25 ` [PATCH 04/10] mpt3sas: separate out _base_recovery_check() Hannes Reinecke
2017-02-07 13:16 ` Christoph Hellwig
2017-02-16 9:53 ` Sreekanth Reddy
2017-02-16 10:03 ` Hannes Reinecke
2017-01-31 9:25 ` [PATCH 05/10] mpt3sas: open-code _scsih_scsi_lookup_get() Hannes Reinecke
2017-02-07 13:16 ` Christoph Hellwig
2017-02-16 9:59 ` Sreekanth Reddy
2017-02-16 10:04 ` Hannes Reinecke
2017-01-31 9:25 ` [PATCH 06/10] mpt3sas: Introduce mpt3sas_get_st_from_smid() Hannes Reinecke
2017-02-07 13:17 ` Christoph Hellwig
2017-01-31 9:25 ` [PATCH 07/10] mpt3sas: use hi-priority queue for TMFs Hannes Reinecke
2017-02-07 13:19 ` Christoph Hellwig
2017-02-16 10:09 ` Sreekanth Reddy
2017-02-16 10:14 ` Hannes Reinecke
2017-02-16 10:23 ` Sreekanth Reddy
2017-02-16 10:26 ` Hannes Reinecke
2017-01-31 9:25 ` [PATCH 08/10] mpt3sas: lockless command submission for scsi-mq Hannes Reinecke
2017-01-31 13:22 ` Christoph Hellwig [this message]
2017-01-31 13:46 ` Hannes Reinecke
2017-01-31 14:24 ` Christoph Hellwig
2017-01-31 9:25 ` [PATCH 09/10] mpt3sas: Use 'msix_index' as argument for put_smid functions Hannes Reinecke
2017-01-31 9:26 ` [PATCH 10/10] mpt3sas: scsi-mq interrupt steering Hannes Reinecke
2017-01-31 10:05 ` Christoph Hellwig
2017-01-31 10:02 ` [PATCH 00/10] mpt3sas: full mq support Christoph Hellwig
2017-01-31 11:16 ` Hannes Reinecke
2017-01-31 17:54 ` Kashyap Desai
2017-02-01 6:51 ` Hannes Reinecke
2017-02-01 7:07 ` Kashyap Desai
2017-02-01 7:43 ` Hannes Reinecke
2017-02-09 13:03 ` Sreekanth Reddy
2017-02-09 13:12 ` Hannes Reinecke
2017-02-10 4:43 ` Sreekanth Reddy
2017-02-10 6:59 ` Hannes Reinecke
2017-02-13 6:15 ` Sreekanth Reddy
2017-02-13 13:11 ` Hannes Reinecke
2017-02-15 8:27 ` Sreekanth Reddy
2017-02-15 9:18 ` Kashyap Desai
2017-02-15 10:05 ` Hannes Reinecke
2017-02-16 9:48 ` Kashyap Desai
2017-02-16 10:18 ` Hannes Reinecke
2017-02-16 10:45 ` Kashyap Desai
2017-02-07 13:19 ` Christoph Hellwig
2017-02-07 14:38 ` Hannes Reinecke
2017-02-07 15:34 ` Christoph Hellwig
2017-02-07 15:39 ` Hannes Reinecke
2017-02-07 15:40 ` Christoph Hellwig
2017-02-07 15:49 ` Hannes Reinecke
2017-02-15 8:15 ` Christoph Hellwig
2017-02-15 8:19 ` Hannes Reinecke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170131132206.GA5686@lst.de \
--to=hch@lst.de \
--cc=hare@suse.com \
--cc=hare@suse.de \
--cc=james.bottomley@hansenpartnership.com \
--cc=kashyap.desai@broadcom.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=mpt-fusionlinux.pdl@broadcom.com \
--cc=sathya.prakash@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.