Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

scsi: nsp32: Stop using the SCSI pointer

Move the SCSI status field to private data. Stop setting the .ptr,
.this_residual, .buffer and .buffer_residual SCSI pointer members
since no code in this driver reads these members.

This patch prepares for removal of the SCSI pointer from struct scsi_cmnd.

Link: https://lore.kernel.org/r/20220218195117.25689-38-bvanassche@acm.org
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Reviewed-by: Masanori Goto <gotom@debian.or.jp>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

Bart Van Assche and committed by
Martin K. Petersen
195771c5 af0d3c13

+16 -13
+7 -13
drivers/scsi/nsp32.c
··· 273 273 .eh_abort_handler = nsp32_eh_abort, 274 274 .eh_host_reset_handler = nsp32_eh_host_reset, 275 275 /* .highmem_io = 1, */ 276 + .cmd_size = sizeof(struct nsp32_cmd_priv), 276 277 }; 277 278 278 279 #include "nsp32_io.h" ··· 947 946 show_command(SCpnt); 948 947 949 948 data->CurrentSC = SCpnt; 950 - SCpnt->SCp.Status = SAM_STAT_CHECK_CONDITION; 949 + nsp32_priv(SCpnt)->status = SAM_STAT_CHECK_CONDITION; 951 950 scsi_set_resid(SCpnt, scsi_bufflen(SCpnt)); 952 - 953 - SCpnt->SCp.ptr = (char *)scsi_sglist(SCpnt); 954 - SCpnt->SCp.this_residual = scsi_bufflen(SCpnt); 955 - SCpnt->SCp.buffer = NULL; 956 - SCpnt->SCp.buffers_residual = 0; 957 951 958 952 /* initialize data */ 959 953 data->msgout_len = 0; ··· 1372 1376 case BUSPHASE_STATUS: 1373 1377 nsp32_dbg(NSP32_DEBUG_INTR, "fifo/status"); 1374 1378 1375 - SCpnt->SCp.Status = nsp32_read1(base, SCSI_CSB_IN); 1379 + nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); 1376 1380 1377 1381 break; 1378 1382 default: ··· 1683 1687 /* MsgIn 00: Command Complete */ 1684 1688 nsp32_dbg(NSP32_DEBUG_BUSFREE, "command complete"); 1685 1689 1686 - SCpnt->SCp.Status = nsp32_read1(base, SCSI_CSB_IN); 1690 + nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); 1687 1691 nsp32_dbg(NSP32_DEBUG_BUSFREE, 1688 1692 "normal end stat=0x%x resid=0x%x\n", 1689 - SCpnt->SCp.Status, scsi_get_resid(SCpnt)); 1693 + nsp32_priv(SCpnt)->status, scsi_get_resid(SCpnt)); 1690 1694 SCpnt->result = (DID_OK << 16) | 1691 - (SCpnt->SCp.Status << 0); 1695 + (nsp32_priv(SCpnt)->status << 0); 1692 1696 nsp32_scsi_done(SCpnt); 1693 1697 /* All operation is done */ 1694 1698 return TRUE; 1695 1699 } else if (execph & MSGIN_04_VALID) { 1696 1700 /* MsgIn 04: Disconnect */ 1697 - SCpnt->SCp.Status = nsp32_read1(base, SCSI_CSB_IN); 1701 + nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); 1698 1702 1699 1703 nsp32_dbg(NSP32_DEBUG_BUSFREE, "disconnect"); 1700 1704 return TRUE; ··· 1702 1706 /* Unexpected bus free */ 1703 1707 nsp32_msg(KERN_WARNING, "unexpected bus free occurred"); 1704 1708 1705 - /* DID_ERROR? */ 1706 - //SCpnt->result = (DID_OK << 16) | (SCpnt->SCp.Status << 0); 1707 1709 SCpnt->result = DID_ERROR << 16; 1708 1710 nsp32_scsi_done(SCpnt); 1709 1711 return TRUE;
+9
drivers/scsi/nsp32.h
··· 534 534 ---PERIOD-- ---OFFSET-- */ 535 535 #define TO_SYNCREG(period, offset) (((period) & 0x0f) << 4 | ((offset) & 0x0f)) 536 536 537 + struct nsp32_cmd_priv { 538 + enum sam_status status; 539 + }; 540 + 541 + static inline struct nsp32_cmd_priv *nsp32_priv(struct scsi_cmnd *cmd) 542 + { 543 + return scsi_cmd_priv(cmd); 544 + } 545 + 537 546 typedef struct _nsp32_target { 538 547 unsigned char syncreg; /* value for SYNCREG */ 539 548 unsigned char ackwidth; /* value for ACKWIDTH */