mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
[SCSI] scsi_error: Refactoring scsi_error to facilitate in synchronous REQUEST_SENSE
- Drivers/transports that want to send a synchronous REQUEST_SENSE command as part of their .queuecommand sequence, have 2 new API's that facilitate in doing so and abstract them from scsi-ml internals. void scsi_eh_prep_cmnd(struct scsi_cmnd *scmd, struct scsi_eh_save *sesci, unsigned char *cmnd, int cmnd_size, int sense_bytes) Will hijack a command and prepare it for request sense if needed. And will save any later needed info into a scsi_eh_save structure. void scsi_eh_restore_cmnd(struct scsi_cmnd* scmd, struct scsi_eh_save *sesci); Will undo any changes done to a command by above function. Making it ready for completion. - Re-factor scsi_send_eh_cmnd() to use above APIs Signed-off-by: Boaz Harrosh <[email protected]> Signed-off-by: James Bottomley <[email protected]>
This commit is contained in:
parent
55db6c1b8e
commit
e1c234685c
2 changed files with 90 additions and 47 deletions
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _SCSI_SCSI_EH_H
|
||||
#define _SCSI_SCSI_EH_H
|
||||
|
||||
struct scsi_cmnd;
|
||||
#include <scsi/scsi_cmnd.h>
|
||||
struct scsi_device;
|
||||
struct Scsi_Host;
|
||||
|
||||
|
|
@ -65,4 +65,25 @@ extern int scsi_get_sense_info_fld(const u8 * sense_buffer, int sb_len,
|
|||
|
||||
extern int scsi_reset_provider(struct scsi_device *, int);
|
||||
|
||||
struct scsi_eh_save {
|
||||
int result;
|
||||
enum dma_data_direction data_direction;
|
||||
unsigned char cmd_len;
|
||||
unsigned char cmnd[MAX_COMMAND_SIZE];
|
||||
|
||||
void *buffer;
|
||||
unsigned bufflen;
|
||||
unsigned short use_sg;
|
||||
int resid;
|
||||
|
||||
struct scatterlist sense_sgl;
|
||||
};
|
||||
|
||||
extern void scsi_eh_prep_cmnd(struct scsi_cmnd *scmd,
|
||||
struct scsi_eh_save *ses, unsigned char *cmnd,
|
||||
int cmnd_size, unsigned sense_bytes);
|
||||
|
||||
extern void scsi_eh_restore_cmnd(struct scsi_cmnd* scmd,
|
||||
struct scsi_eh_save *ses);
|
||||
|
||||
#endif /* _SCSI_SCSI_EH_H */
|
||||
|
|
|
|||
Loading…
Reference in a new issue