Re: [PATCH 02/24] scsi: add scsi_{get,put}_reserved_cmd()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/30/19 8:41 AM, Ming Lei wrote:
On Wed, May 29, 2019 at 03:28:39PM +0200, Hannes Reinecke wrote:
Add helper functions to retrieve SCSI commands from the reserved
tag pool.

Signed-off-by: Hannes Reinecke <hare@xxxxxxxx>
---
  include/scsi/scsi_tcq.h | 22 ++++++++++++++++++++++
  1 file changed, 22 insertions(+)

diff --git a/include/scsi/scsi_tcq.h b/include/scsi/scsi_tcq.h
index 6053d46e794e..227f3bd4e974 100644
--- a/include/scsi/scsi_tcq.h
+++ b/include/scsi/scsi_tcq.h
@@ -39,5 +39,27 @@ static inline struct scsi_cmnd *scsi_host_find_tag(struct Scsi_Host *shost,
  	return blk_mq_rq_to_pdu(req);
  }
+static inline struct scsi_cmnd *scsi_get_reserved_cmd(struct scsi_device *sdev)
+{
+	struct request *rq;
+	struct scsi_cmnd *scmd;
+
+	rq = blk_mq_alloc_request(sdev->request_queue,
+				  REQ_OP_SCSI_OUT | REQ_NOWAIT,
+				  BLK_MQ_REQ_RESERVED);
+	if (IS_ERR(rq))
+		return NULL;
+	scmd = blk_mq_rq_to_pdu(rq);
+	scmd->request = rq;
+	return scmd;
+}

Now all these internal commands won't share tags with IO requests,
however, your patch switches to reserve slots for internal
commands.

Yes.

This way may have performance effect on IO workloads given the
reserved tags can't be used by IO at all.

Not really. Basically all drivers which have to use tags to send internal commands already set some tags aside to handle internal commands. So all this patchset does is to formalize this behaviour by using private tags. Some drivers (like fnic or snic) does _not_ do this currently; for those I've set one command aside to handle command abort etc.

Just wondering why not use an new tagset for internal commands?

Because it doesn't help.
All of these drivers have a common tag pool internally, which every single command is required to use. So using a new tagset doesn't help here; you just would need to split the (hardware) tag pool with no real gain.

Cheers,

Hannes
--
Dr. Hannes Reinecke            Teamlead Storage & Networking
hare@xxxxxxx                              +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG Nürnberg)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux