mirror of
https://github.com/torvalds/linux.git
synced 2026-09-20 17:43:57 -04:00
[SCSI] hide EH backup data outside the scsi_cmnd
Currently struct scsi_cmnd has various fields that are used to backup original data after the corresponding fields have been overridden for EH commands. This means drivers can easily get at it and misuse it. Due to the old_ naming this doesn't happen for most of them, but two that have different names have been used wrong a lot (see previous patch). Another downside is that they unessecarily bloat the scsi_cmnd size. This patch moves them onstack in scsi_send_eh_cmnd to fix those two issues aswell as allowing future EH fixes like moving the EH command submissions to use SG lists like everything else. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
committed by
James Bottomley
parent
ae0fda0cdf
commit
631c228cd0
@@ -58,9 +58,7 @@ struct scsi_cmnd {
|
||||
int timeout_per_command;
|
||||
|
||||
unsigned char cmd_len;
|
||||
unsigned char old_cmd_len;
|
||||
enum dma_data_direction sc_data_direction;
|
||||
enum dma_data_direction sc_old_data_direction;
|
||||
|
||||
/* These elements define the operation we are about to perform */
|
||||
#define MAX_COMMAND_SIZE 16
|
||||
@@ -71,18 +69,11 @@ struct scsi_cmnd {
|
||||
void *request_buffer; /* Actual requested buffer */
|
||||
|
||||
/* These elements define the operation we ultimately want to perform */
|
||||
unsigned char data_cmnd[MAX_COMMAND_SIZE];
|
||||
unsigned short old_use_sg; /* We save use_sg here when requesting
|
||||
* sense info */
|
||||
unsigned short use_sg; /* Number of pieces of scatter-gather */
|
||||
unsigned short sglist_len; /* size of malloc'd scatter-gather list */
|
||||
unsigned bufflen; /* Size of data buffer */
|
||||
void *buffer; /* Data buffer */
|
||||
|
||||
unsigned underflow; /* Return error if less than
|
||||
this amount is transferred */
|
||||
unsigned old_underflow; /* save underflow here when reusing the
|
||||
* command for error handling */
|
||||
|
||||
unsigned transfersize; /* How much we are guaranteed to
|
||||
transfer with each SCSI transfer
|
||||
|
||||
Reference in New Issue
Block a user