> On Feb 8, 2022, at 9:25 AM, Bart Van Assche <bvanassche@xxxxxxx> wrote: > > Set .cmd_size in the SCSI host template instead of using the SCSI pointer > from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer > from struct scsi_cmnd. > > Reviewed-by: Johannes Thumshirn <johannes.thumshirn@xxxxxxx> > Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> > --- > drivers/scsi/qla1280.c | 21 ++++----------------- > drivers/scsi/qla1280.h | 3 +-- > 2 files changed, 5 insertions(+), 19 deletions(-) > > diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c > index 1dc56f4c89d8..0ab595c0870a 100644 > --- a/drivers/scsi/qla1280.c > +++ b/drivers/scsi/qla1280.c > @@ -477,13 +477,6 @@ __setup("qla1280=", qla1280_setup); > #endif > > > -/* > - * We use the scsi_pointer structure that's included with each scsi_command > - * to overlay our struct srb over it. qla1280_init() checks that a srb is not > - * bigger than a scsi_pointer. > - */ > - > -#define CMD_SP(Cmnd) &Cmnd->SCp > #define CMD_CDBLEN(Cmnd) Cmnd->cmd_len > #define CMD_CDBP(Cmnd) Cmnd->cmnd > #define CMD_SNSP(Cmnd) Cmnd->sense_buffer > @@ -693,7 +686,7 @@ static int qla1280_queuecommand_lck(struct scsi_cmnd *cmd) > { > struct Scsi_Host *host = cmd->device->host; > struct scsi_qla_host *ha = (struct scsi_qla_host *)host->hostdata; > - struct srb *sp = (struct srb *)CMD_SP(cmd); > + struct srb *sp = scsi_cmd_priv(cmd); > int status; > > sp->cmd = cmd; > @@ -828,7 +821,7 @@ qla1280_error_action(struct scsi_cmnd *cmd, enum action action) > ENTER("qla1280_error_action"); > > ha = (struct scsi_qla_host *)(CMD_HOST(cmd)->hostdata); > - sp = (struct srb *)CMD_SP(cmd); > + sp = scsi_cmd_priv(cmd); > bus = SCSI_BUS_32(cmd); > target = SCSI_TCN_32(cmd); > lun = SCSI_LUN_32(cmd); > @@ -3959,7 +3952,7 @@ __qla1280_print_scsi_cmd(struct scsi_cmnd *cmd) > int i; > ha = (struct scsi_qla_host *)host->hostdata; > > - sp = (struct srb *)CMD_SP(cmd); > + sp = scsi_cmd_priv(cmd); > printk("SCSI Command @= 0x%p, Handle=0x%p\n", cmd, CMD_HANDLE(cmd)); > printk(" chan=%d, target = 0x%02x, lun = 0x%02x, cmd_len = 0x%02x\n", > SCSI_BUS_32(cmd), SCSI_TCN_32(cmd), SCSI_LUN_32(cmd), > @@ -3979,7 +3972,6 @@ __qla1280_print_scsi_cmd(struct scsi_cmnd *cmd) > } */ > printk(" tag=%d, transfersize=0x%x \n", > scsi_cmd_to_rq(cmd)->tag, cmd->transfersize); > - printk(" SP=0x%p\n", CMD_SP(cmd)); > printk(" underflow size = 0x%x, direction=0x%x\n", > cmd->underflow, cmd->sc_data_direction); > } > @@ -4139,6 +4131,7 @@ static struct scsi_host_template qla1280_driver_template = { > .can_queue = MAX_OUTSTANDING_COMMANDS, > .this_id = -1, > .sg_tablesize = SG_ALL, > + .cmd_size = sizeof(struct srb), > }; > > > @@ -4351,12 +4344,6 @@ static struct pci_driver qla1280_pci_driver = { > static int __init > qla1280_init(void) > { > - if (sizeof(struct srb) > sizeof(struct scsi_pointer)) { > - printk(KERN_WARNING > - "qla1280: struct srb too big, aborting\n"); > - return -EINVAL; > - } > - > #ifdef MODULE > /* > * If we are called as a module, the qla1280 pointer may not be null > diff --git a/drivers/scsi/qla1280.h b/drivers/scsi/qla1280.h > index e7820b5bca38..d309e2ca14de 100644 > --- a/drivers/scsi/qla1280.h > +++ b/drivers/scsi/qla1280.h > @@ -87,8 +87,7 @@ > #define RESPONSE_ENTRY_CNT 63 /* Number of response entries. */ > > /* > - * SCSI Request Block structure (sp) that is placed > - * on cmd->SCp location of every I/O > + * SCSI Request Block structure (sp) that occurs after each struct scsi_cmnd. > */ > struct srb { > struct list_head list; /* (8/16) LU queue */ Reviewed-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> -- Himanshu Madhani Oracle Linux Engineering