I like this idea, but..

> -void scsi_init_command(struct scsi_device *dev, struct scsi_cmnd *cmd)
> +void scsi_init_command(struct scsi_device *dev, struct scsi_cmnd *cmd,
> +                    struct scsi_data_buffer *prot_sdb)
>  {
>       void *buf = cmd->sense_buffer;
> -     void *prot = cmd->prot_sdb;
>       unsigned int unchecked_isa_dma = cmd->flags & SCMD_UNCHECKED_ISA_DMA;
>  
>       /* zero out the cmd, except for the embedded scsi_request */
> @@ -1164,7 +1164,7 @@ void scsi_init_command(struct scsi_device *dev, struct 
> scsi_cmnd *cmd)
>  
>       cmd->device = dev;
>       cmd->sense_buffer = buf;
> -     cmd->prot_sdb = prot;
> +     cmd->prot_sdb = prot_sdb;

What would be the problem of always preserving the original prot_sdb
value instead of passing it by argument?  You;d just need to initialize
it in scsi_init_request when the command is allocated.

Reply via email to