All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: "Martin K . Petersen" <martin.petersen@oracle.com>
Cc: linux-scsi@vger.kernel.org, Bart Van Assche <bvanassche@acm.org>,
	Christoph Hellwig <hch@lst.de>, Hannes Reinecke <hare@suse.de>,
	Ming Lei <ming.lei@redhat.com>,
	"James E.J. Bottomley" <jejb@linux.ibm.com>
Subject: [PATCH 01/50] core: Introduce the blk_req() function
Date: Fri, 14 May 2021 14:32:16 -0700	[thread overview]
Message-ID: <20210514213356.5264-2-bvanassche@acm.org> (raw)
In-Reply-To: <20210514213356.5264-1-bvanassche@acm.org>

The 'request' member of struct scsi_cmnd is superfluous. The struct
request and struct scsi_cmnd data structures are adjacent and hence the
request pointer can be derived easily from a scsi_cmnd pointer. Introduce
a helper function that performs that conversion in a type-safe way. This
patch is the first step towards removing the request member from struct
scsi_cmnd. Making that change has the following advantages:
- This is a performance optimization since adding an offset to a pointer
  takes less time than dereferencing a pointer.
- struct scsi_cmnd becomes smaller.

Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
 include/scsi/scsi_cmnd.h | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
index fed024f4c02a..f5825be7ee76 100644
--- a/include/scsi/scsi_cmnd.h
+++ b/include/scsi/scsi_cmnd.h
@@ -146,6 +146,12 @@ struct scsi_cmnd {
 	unsigned int extra_len;	/* length of alignment and padding */
 };
 
+/* Variant of blk_mq_rq_from_pdu() that verifies the type of its argument. */
+static inline struct request *blk_req(struct scsi_cmnd *scmd)
+{
+	return blk_mq_rq_from_pdu(scmd);
+}
+
 /*
  * Return the driver private allocation behind the command.
  * Only works if cmd_size is set in the host template.

  reply	other threads:[~2021-05-14 21:34 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-14 21:32 [PATCH 00/50] Remove the request pointer from struct scsi_cmnd Bart Van Assche
2021-05-14 21:32 ` Bart Van Assche [this message]
2021-05-15  6:47   ` [PATCH 01/50] core: Introduce the blk_req() function Christoph Hellwig
2021-05-17 16:07     ` Bart Van Assche
2021-05-14 21:32 ` [PATCH 02/50] core: Use blk_req() instead of scsi_cmnd.request Bart Van Assche
2021-05-14 21:32 ` [PATCH 03/50] sd: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 04/50] sr: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 05/50] scsi_transport_fc: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 06/50] scsi_transport_spi: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 07/50] ata: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 08/50] rdma/iser: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 09/50] rdma/srp: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 10/50] zfcp: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 11/50] 53c700: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 12/50] NCR5380: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 13/50] aacraid: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 14/50] advansys: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 15/50] bnx2i: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 16/50] csiostor: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 17/50] cxlflash: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 18/50] dpt_i2o: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 19/50] fnic: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 20/50] hisi_sas: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 21/50] hpsa: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 22/50] ibmvfc: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 23/50] ibmvscsi: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 24/50] ips: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 25/50] libsas: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 26/50] lpfc: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 27/50] megaraid: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 28/50] mpt3sas: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 29/50] mvumi: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 30/50] myrb: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 31/50] myrs: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 32/50] ncr53c8xx: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 33/50] qedf: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 34/50] qedi: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 35/50] qla1280: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 36/50] qla2xxx: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 37/50] qla4xxx: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 38/50] qlogicpti: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 39/50] scsi_debug: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 40/50] smartpqi: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 41/50] snic: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 42/50] stex: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 43/50] sun3_scsi: " Bart Van Assche
2021-05-14 21:32 ` [PATCH 44/50] sym53c8xx: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 45/50] ufs: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 46/50] virtio_scsi: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 47/50] xen-scsifront: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 48/50] tcm_loop: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 49/50] usb-storage: " Bart Van Assche
2021-05-15 15:09   ` Alan Stern
2021-05-14 21:33 ` [PATCH 50/50] core: Remove the request member from struct scsi_cmnd Bart Van Assche
2021-05-14 21:33 ` [PATCH 00/50] Remove the request pointer " Bart Van Assche
2021-05-14 21:33 ` [PATCH 01/50] core: Introduce the blk_req() function Bart Van Assche
2021-05-14 21:33 ` [PATCH 02/50] core: Use blk_req() instead of scsi_cmnd.request Bart Van Assche
2021-05-14 21:33 ` [PATCH 03/50] sd: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 04/50] sr: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 05/50] scsi_transport_fc: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 06/50] scsi_transport_spi: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 07/50] ata: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 08/50] rdma/iser: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 09/50] rdma/srp: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 10/50] zfcp: " Bart Van Assche
2021-05-17 17:29   ` Benjamin Block
2021-05-14 21:33 ` [PATCH 11/50] 53c700: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 12/50] NCR5380: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 13/50] aacraid: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 14/50] advansys: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 15/50] bnx2i: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 16/50] csiostor: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 17/50] cxlflash: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 18/50] dpt_i2o: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 19/50] fnic: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 20/50] hisi_sas: " Bart Van Assche
2021-05-17  9:49   ` John Garry
2021-05-14 21:33 ` [PATCH 21/50] hpsa: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 22/50] ibmvfc: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 23/50] ibmvscsi: " Bart Van Assche
2021-05-14 21:33 ` [PATCH 24/50] ips: " Bart Van Assche

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=20210514213356.5264-2-bvanassche@acm.org \
    --to=bvanassche@acm.org \
    --cc=hare@suse.de \
    --cc=hch@lst.de \
    --cc=jejb@linux.ibm.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=ming.lei@redhat.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.