mbox series

[v5,00/49] Remove the SCSI pointer from struct scsi_cmnd

Message ID 20220218195117.25689-1-bvanassche@acm.org
Headers show
Series Remove the SCSI pointer from struct scsi_cmnd | expand

Message

Bart Van Assche Feb. 18, 2022, 7:50 p.m. UTC
Hi Martin,

The size of struct scsi_cmnd matters for embedded devices. One of the
largest members of that structure is the SCSI pointer. That structure is
relevant for SCSI-II drivers but not for modern SCSI drivers. Hence this
patch series that removes the SCSI pointer from struct scsi_cmnd and moves
it into driver-private command data.

Please consider this patch series for kernel v5.18.

Thanks,

Bart.

Changes compared to v4:
- Replaced two NCR5380 patches by a patch from Finn Thain.
- Added more Reviewed-by tags.

Changes compared to v3:
- Split the libfc patch into three patches (libfc, bnx2fc, qedf). Removed the
  libfc private command information and also the status information from the
  bnx2fc and qedf private command data.
- Removed the following statement from libfc_host_alloc():
    WARN_ON_ONCE(sht->cmd_size < sizeof(struct libfc_cmd_priv));
- Added more Reviewed-by tags.

Changes compared to v2:
- Split the ips and nsp_cs patches at the start of this series such that there
  is only one change in each patch.
- Changed the return type of ips_release() from 'int' into 'void' since the
  value returned by that function is not used.
- Remove duplicate <scsi/scsi.h> include directives.
- Use struct scsi_pointer directly instead of wrapping it inside another
  structure for drivers that do not use host_scribble as requested by Hannes.
- Updated the error messages that refer to the SCp.ptr member if that member
  is removed by this patch series.
- Removed WARN_ON_ONCE(sht->cmd_size < sizeof(struct iscsi_cmd)) from
  iscsi_host_alloc() and removed struct iscsi_cmd from the qla4xxx private data
  as requested by Mike.
- Changed 'cmd - 1' into a container_of() expression in megaraid.h (Hannes).
- Removed a cast from the mvsas driver (John).
- Modified the comment in include/scsi/scsi_cmnd.h in the last patch (John).

Changes compared to v1:
- Removed BUILD_BUG_ON(sizeof(...) > sizeof(struct scsi_pointer)) statements.
- Added two void casts in front of I/O statements as requested by Johannes.
- Improved source code formatting in the aha152x driver.
- Restored the DID_OK constant in a SCSI result expression.
- Updated Reviewed-by tags.

Bart Van Assche (48):
  scsi: ips: Remove an unreachable statement
  scsi: ips: Change the return type of ips_release() into 'void'
  scsi: ips: Use true and false instead of TRUE and FALSE
  scsi: nsp_cs: Change the return type of two functions into 'void'
  scsi: nsp_cs: Use true and false instead of TRUE and FALSE
  scsi: Remove drivers/scsi/scsi.h
  scsi: NCR5380: Remove the NCR5380_CMD_SIZE macro
  scsi: arm: Rename arm/scsi.h into arm/arm_scsi.h
  scsi: arm: Move the SCSI pointer to private command data
  scsi: 53c700: Stop clearing SCSI pointer fields
  scsi: aacraid: Move the SCSI pointer to private command data
  scsi: advansys: Move the SCSI pointer to private command data
  scsi: aha1542: Remove a set-but-not-used array
  scsi: aha152x: Move the SCSI pointer to private command data
  scsi: bfa: Stop using the SCSI pointer
  scsi: csio: Stop using the SCSI pointer
  scsi: dc395x: Stop using the SCSI pointer
  scsi: esp_scsi: Stop using the SCSI pointer
  scsi: fdomain: Move the SCSI pointer to private command data
  scsi: fnic: Fix a tracing statement
  scsi: fnic: Stop using the SCSI pointer
  scsi: hptiop: Stop using the SCSI pointer
  scsi: imm: Move the SCSI pointer to private command data
  scsi: iscsi: Stop using the SCSI pointer
  scsi: initio: Stop using the SCSI pointer
  scsi: libfc: Stop using the SCSI pointer
  scsi: bnx2fc: Stop using the SCSI pointer
  scsi: qedf: Stop using the SCSI pointer
  scsi: mac53c94: Fix a set-but-not-used compiler warning
  scsi: mac53c94: Move the SCSI pointer to private command data
  scsi: megaraid: Stop using the SCSI pointer
  scsi: megasas: Stop using the SCSI pointer
  scsi: mesh: Move the SCSI pointer to private command data
  scsi: mvsas: Fix a set-but-not-used warning
  scsi: mvumi: Stop using the SCSI pointer
  scsi: nsp32: Stop using the SCSI pointer
  scsi: nsp_cs: Move the SCSI pointer to private command data
  scsi: sym53c500_cs: Move the SCSI pointer to private command data
  scsi: ppa: Move the SCSI pointer to private command data
  scsi: qla1280: Move the SCSI pointer to private command data
  scsi: qla2xxx: Stop using the SCSI pointer
  scsi: smartpqi: Stop using the SCSI pointer
  scsi: sym53c8xx_2: Move the SCSI pointer to private command data
  scsi: usb: Stop using the SCSI pointer
  scsi: wd719x: Stop using the SCSI pointer
  scsi: wd33c93: Move the SCSI pointer to private command data
  scsi: zalon: Stop using the SCSI pointer
  scsi: core: Remove struct scsi_pointer from struct scsi_cmnd

Finn Thain (1):
  scsi: NCR5380: Add SCp members to struct NCR5380_cmd

 drivers/infiniband/ulp/iser/iscsi_iser.c    |   1 +
 drivers/scsi/53c700.c                       |   2 -
 drivers/scsi/NCR5380.c                      |  94 ++++---
 drivers/scsi/NCR5380.h                      |  13 +-
 drivers/scsi/a2091.c                        |  25 +-
 drivers/scsi/a3000.c                        |  25 +-
 drivers/scsi/aacraid/aachba.c               |  43 +--
 drivers/scsi/aacraid/aacraid.h              |  24 +-
 drivers/scsi/aacraid/comminit.c             |   2 +-
 drivers/scsi/aacraid/linit.c                |  21 +-
 drivers/scsi/advansys.c                     |  22 +-
 drivers/scsi/aha152x.c                      | 268 ++++++++++--------
 drivers/scsi/aha1542.c                      |   3 +-
 drivers/scsi/aha1740.c                      |   6 +-
 drivers/scsi/arm/acornscsi.c                |  28 +-
 drivers/scsi/arm/{scsi.h => arm_scsi.h}     |  37 ++-
 drivers/scsi/arm/arxescsi.c                 |   6 +-
 drivers/scsi/arm/cumana_1.c                 |   2 +-
 drivers/scsi/arm/cumana_2.c                 |   8 +-
 drivers/scsi/arm/eesox.c                    |   8 +-
 drivers/scsi/arm/fas216.c                   |  36 ++-
 drivers/scsi/arm/fas216.h                   |   4 +
 drivers/scsi/arm/oak.c                      |   2 +-
 drivers/scsi/arm/powertec.c                 |   8 +-
 drivers/scsi/arm/queue.c                    |   6 +-
 drivers/scsi/atari_scsi.c                   |   6 +-
 drivers/scsi/be2iscsi/be_main.c             |   3 +-
 drivers/scsi/bfa/bfad_im.c                  |  27 +-
 drivers/scsi/bfa/bfad_im.h                  |  16 ++
 drivers/scsi/bnx2fc/bnx2fc.h                |   9 +-
 drivers/scsi/bnx2fc/bnx2fc_fcoe.c           |   1 +
 drivers/scsi/bnx2fc/bnx2fc_io.c             |  23 +-
 drivers/scsi/bnx2i/bnx2i_iscsi.c            |   1 +
 drivers/scsi/csiostor/csio_scsi.c           |  20 +-
 drivers/scsi/csiostor/csio_scsi.h           |  10 +
 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c          |   1 +
 drivers/scsi/cxgbi/cxgb4i/cxgb4i.c          |   1 +
 drivers/scsi/dc395x.c                       |   3 -
 drivers/scsi/dmx3191d.c                     |   2 +-
 drivers/scsi/esp_scsi.c                     |   4 +-
 drivers/scsi/esp_scsi.h                     |   3 +-
 drivers/scsi/fcoe/fcoe.c                    |   1 +
 drivers/scsi/fdomain.c                      |  64 +++--
 drivers/scsi/fnic/fnic.h                    |  27 +-
 drivers/scsi/fnic/fnic_main.c               |   1 +
 drivers/scsi/fnic/fnic_scsi.c               | 289 ++++++++++----------
 drivers/scsi/g_NCR5380.c                    |   6 +-
 drivers/scsi/gvp11.c                        |  25 +-
 drivers/scsi/hptiop.c                       |   1 +
 drivers/scsi/hptiop.h                       |   4 +-
 drivers/scsi/imm.c                          |  88 +++---
 drivers/scsi/imm.h                          |   5 +
 drivers/scsi/initio.c                       |  14 +-
 drivers/scsi/initio.h                       |   9 +
 drivers/scsi/ips.c                          |  52 ++--
 drivers/scsi/iscsi_tcp.c                    |   1 +
 drivers/scsi/libfc/fc_fcp.c                 |  26 +-
 drivers/scsi/libiscsi.c                     |  20 +-
 drivers/scsi/mac53c94.c                     |  27 +-
 drivers/scsi/mac53c94.h                     |  11 +
 drivers/scsi/mac_scsi.c                     |   9 +-
 drivers/scsi/megaraid.c                     |  21 +-
 drivers/scsi/megaraid.h                     |  23 +-
 drivers/scsi/megaraid/megaraid_sas.h        |  12 +
 drivers/scsi/megaraid/megaraid_sas_base.c   |   8 +-
 drivers/scsi/megaraid/megaraid_sas_fusion.c |  15 +-
 drivers/scsi/mesh.c                         |  20 +-
 drivers/scsi/mesh.h                         |  11 +
 drivers/scsi/mvme147.c                      |  16 +-
 drivers/scsi/mvsas/mv_init.c                |   6 +-
 drivers/scsi/mvumi.c                        |   9 +-
 drivers/scsi/mvumi.h                        |   9 +
 drivers/scsi/ncr53c8xx.c                    |  22 +-
 drivers/scsi/ncr53c8xx.h                    |   6 +
 drivers/scsi/nsp32.c                        |  20 +-
 drivers/scsi/nsp32.h                        |   9 +
 drivers/scsi/pcmcia/aha152x_stub.c          |   9 +-
 drivers/scsi/pcmcia/nsp_cs.c                | 246 +++++++++--------
 drivers/scsi/pcmcia/nsp_cs.h                |   8 +-
 drivers/scsi/pcmcia/nsp_debug.c             |   2 +-
 drivers/scsi/pcmcia/qlogic_stub.c           |   9 +-
 drivers/scsi/pcmcia/sym53c500_cs.c          |  47 ++--
 drivers/scsi/ppa.c                          |  75 ++---
 drivers/scsi/qedf/qedf.h                    |  10 +-
 drivers/scsi/qedf/qedf_io.c                 |  25 +-
 drivers/scsi/qedf/qedf_main.c               |   3 +-
 drivers/scsi/qedi/qedi_fw.c                 |   4 +-
 drivers/scsi/qedi/qedi_iscsi.c              |   1 +
 drivers/scsi/qla1280.c                      |  21 +-
 drivers/scsi/qla1280.h                      |   3 +-
 drivers/scsi/qla2xxx/qla_def.h              |   2 -
 drivers/scsi/qla2xxx/qla_os.c               |  13 +-
 drivers/scsi/qla4xxx/ql4_def.h              |  16 +-
 drivers/scsi/qla4xxx/ql4_os.c               |  13 +-
 drivers/scsi/qlogicfas.c                    |   6 +-
 drivers/scsi/qlogicfas408.c                 |   6 +-
 drivers/scsi/scsi.h                         |  46 ----
 drivers/scsi/sg.c                           |   8 +-
 drivers/scsi/sgiwd93.c                      |  24 +-
 drivers/scsi/smartpqi/smartpqi_init.c       |  14 +-
 drivers/scsi/sun3_scsi.c                    |   4 +-
 drivers/scsi/sym53c8xx_2/sym_glue.c         |   4 +-
 drivers/scsi/wd33c93.c                      | 119 ++++----
 drivers/scsi/wd33c93.h                      |   4 +
 drivers/scsi/wd719x.c                       |  12 +-
 drivers/scsi/wd719x.h                       |   1 +
 drivers/scsi/zalon.c                        |   1 +
 drivers/usb/image/microtek.c                |   8 +-
 drivers/usb/storage/debug.c                 |   1 -
 drivers/usb/storage/uas.c                   |  43 ++-
 include/scsi/libfc.h                        |   9 +
 include/scsi/libiscsi.h                     |  12 +
 include/scsi/scsi_cmnd.h                    |  14 +-
 113 files changed, 1470 insertions(+), 1084 deletions(-)
 rename drivers/scsi/arm/{scsi.h => arm_scsi.h} (75%)
 delete mode 100644 drivers/scsi/scsi.h

Comments

Martin K. Petersen Feb. 19, 2022, 10:05 p.m. UTC | #1
Bart,

> The size of struct scsi_cmnd matters for embedded devices. One of the
> largest members of that structure is the SCSI pointer. That structure
> is relevant for SCSI-II drivers but not for modern SCSI drivers. Hence
> this patch series that removes the SCSI pointer from struct scsi_cmnd
> and moves it into driver-private command data.

Applied to 5.18/scsi-staging, thanks!
Martin K. Petersen Feb. 28, 2022, 3:43 a.m. UTC | #2
On Fri, 18 Feb 2022 11:50:28 -0800, Bart Van Assche wrote:

> The size of struct scsi_cmnd matters for embedded devices. One of the
> largest members of that structure is the SCSI pointer. That structure is
> relevant for SCSI-II drivers but not for modern SCSI drivers. Hence this
> patch series that removes the SCSI pointer from struct scsi_cmnd and moves
> it into driver-private command data.
> 
> Please consider this patch series for kernel v5.18.
> 
> [...]

Applied to 5.18/scsi-queue, thanks!

[01/49] scsi: ips: Remove an unreachable statement
        https://git.kernel.org/mkp/scsi/c/2cf0e0a9da38
[02/49] scsi: ips: Change the return type of ips_release() into 'void'
        https://git.kernel.org/mkp/scsi/c/be33e2f8d87f
[03/49] scsi: ips: Use true and false instead of TRUE and FALSE
        https://git.kernel.org/mkp/scsi/c/c4858224096f
[04/49] scsi: nsp_cs: Change the return type of two functions into 'void'
        https://git.kernel.org/mkp/scsi/c/72961735f993
[05/49] scsi: nsp_cs: Use true and false instead of TRUE and FALSE
        https://git.kernel.org/mkp/scsi/c/dfab1e53eef4
[06/49] scsi: Remove drivers/scsi/scsi.h
        https://git.kernel.org/mkp/scsi/c/53555fb7bceb
[07/49] scsi: NCR5380: Remove the NCR5380_CMD_SIZE macro
        https://git.kernel.org/mkp/scsi/c/cd614642e1a2
[08/49] scsi: NCR5380: Add SCp members to struct NCR5380_cmd
        https://git.kernel.org/mkp/scsi/c/ff1269cb3d97
[09/49] scsi: arm: Rename arm/scsi.h into arm/arm_scsi.h
        https://git.kernel.org/mkp/scsi/c/8c97e2f390f5
[10/49] scsi: arm: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/dc4175459099
[11/49] scsi: 53c700: Stop clearing SCSI pointer fields
        https://git.kernel.org/mkp/scsi/c/d80624a2aec5
[12/49] scsi: aacraid: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/76a3451b64c6
[13/49] scsi: advansys: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/17d4c2e22aae
[14/49] scsi: aha1542: Remove a set-but-not-used array
        https://git.kernel.org/mkp/scsi/c/ea1c947559d9
[15/49] scsi: aha152x: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/3ac6aba37200
[16/49] scsi: bfa: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/34f5b537a900
[17/49] scsi: csio: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/30564db73b58
[18/49] scsi: dc395x: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/9804db13d3c8
[19/49] scsi: esp_scsi: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/dfae39874f45
[20/49] scsi: fdomain: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/211134c47cfd
[21/49] scsi: fnic: Fix a tracing statement
        https://git.kernel.org/mkp/scsi/c/3032ed77a289
[22/49] scsi: fnic: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/924cb24df4fc
[23/49] scsi: hptiop: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/5c113eb3bc58
[24/49] scsi: imm: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/6b66f09c46a8
[25/49] scsi: iscsi: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/db22de3eb035
[26/49] scsi: initio: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/09cc102bb4d6
[27/49] scsi: libfc: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/5d21aa3636fa
[28/49] scsi: bnx2fc: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/f4b4216f3e52
[29/49] scsi: qedf: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/a33e7925b5e6
[30/49] scsi: mac53c94: Fix a set-but-not-used compiler warning
        https://git.kernel.org/mkp/scsi/c/8c0156b10e4d
[31/49] scsi: mac53c94: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/cb2b62082c3a
[32/49] scsi: megaraid: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/fb597392b1f4
[33/49] scsi: megasas: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/96e77a27431a
[34/49] scsi: mesh: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/57cbd78e61cf
[35/49] scsi: mvsas: Fix a set-but-not-used warning
        https://git.kernel.org/mkp/scsi/c/8d1537342ff2
[36/49] scsi: mvumi: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/af0d3c13e468
[37/49] scsi: nsp32: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/195771c5da10
[38/49] scsi: nsp_cs: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/ea39700fa90c
[39/49] scsi: sym53c500_cs: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/3d75be6de78e
[40/49] scsi: ppa: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/4a938517fbeb
[41/49] scsi: qla1280: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/504540d00fd5
[42/49] scsi: qla2xxx: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/5597616333ea
[43/49] scsi: smartpqi: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/c1ea387d998a
[44/49] scsi: sym53c8xx_2: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/4022bfd63d8e
[45/49] scsi: usb: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/5dfcf1ad933f
[46/49] scsi: wd719x: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/70d1b920af62
[47/49] scsi: wd33c93: Move the SCSI pointer to private command data
        https://git.kernel.org/mkp/scsi/c/dbb2da557a6a
[48/49] scsi: zalon: Stop using the SCSI pointer
        https://git.kernel.org/mkp/scsi/c/31160bd3e538
[49/49] scsi: core: Remove struct scsi_pointer from struct scsi_cmnd
        https://git.kernel.org/mkp/scsi/c/8264aee803a2