As described in the first patch of this set, commit ce70fd9a551af reduced the maximum size of any SCSI commands (CDB length) to 32 bytes. It was previously larger in struct scsi_request which has now (lk 5.18.0-rc1) been removed. Use a slightly different scheme than before to support CDB lengths greater than 32 bytes. Two access function are added, one for read access, the other for create/write access to the CDB held inside a scsi_cmnd object. A scsi_cmnd object is always paired with a struct request object that immediately precedes it. To note this pairing the new comments refer to a scsi_cmnd "sub-object". Prior to this patch the constructor/destructor naming was obscure: - scsi_alloc_request() to create a pair - blk_mq_free_request() to destruct a pair Add a new destructor function: scsi_free_cmnd(struct scsi_cmnd *scmd) to make this a bit clearer. Also scsi_free_cmnd() will free up a pointer to a long cdb buffer on the heap, if one is present. These changes have been applied to SCSI mid-level and the upper level drivers (ULDs, e.g. sd). Only one low level driver (LLD) has been updated: scsi_debug. The rest of the LLDs can continue to use scsi_cmnd::cmnd directly _unless_ they wish to support CDB lengths > 32 bytes; in that case they should use scsi_cmnd_get_cdb(). This patchset is against lk 5.18.0-rc1 and also applies cleanly to MKP's 5.19/scsi-queue branch. Douglas Gilbert (6): scsi_cmnd: reinstate support for cmd_len > 32 sd, sd_zbc: use scsi_cmnd cdb access functions sg: reinstate cmd_len > 32 bsg: allow cmd_len > 32 scsi_debug: reinstate cmd_len > 32 st,sr: use scsi_cmnd cdb access functions and dtor drivers/scsi/scsi_bsg.c | 22 +- drivers/scsi/scsi_debug.c | 410 +++++++++++++++++++----------------- drivers/scsi/scsi_debugfs.c | 2 +- drivers/scsi/scsi_error.c | 76 ++++--- drivers/scsi/scsi_ioctl.c | 21 +- drivers/scsi/scsi_lib.c | 75 ++++++- drivers/scsi/scsi_logging.c | 11 +- drivers/scsi/sd.c | 176 +++++++++------- drivers/scsi/sd_zbc.c | 12 +- drivers/scsi/sg.c | 21 +- drivers/scsi/sr.c | 24 ++- drivers/scsi/st.c | 12 +- include/scsi/scsi_cmnd.h | 71 ++++++- include/scsi/scsi_eh.h | 6 +- 14 files changed, 565 insertions(+), 374 deletions(-) -- 2.25.1