mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
[SCSI] Support devices with protection information
Implement support for DMA of protection information for devices that are data integrity capable. - Add support for mapping an extra scatter-gather list containing the protection information. - Allocate protection scsi_data_buffer if host is DIX (integrity DMA) capable. - Accessor function for checking whether a device has protection enabled. Signed-off-by: Martin K. Petersen <[email protected]> Signed-off-by: James Bottomley <[email protected]>
This commit is contained in:
parent
db007fc5e2
commit
7027ad72a6
5 changed files with 84 additions and 3 deletions
|
|
@ -90,6 +90,8 @@ struct scsi_cmnd {
|
|||
|
||||
/* These elements define the operation we ultimately want to perform */
|
||||
struct scsi_data_buffer sdb;
|
||||
struct scsi_data_buffer *prot_sdb;
|
||||
|
||||
unsigned underflow; /* Return error if less than
|
||||
this amount is transferred */
|
||||
|
||||
|
|
@ -274,4 +276,22 @@ static inline sector_t scsi_get_lba(struct scsi_cmnd *scmd)
|
|||
return scmd->request->sector;
|
||||
}
|
||||
|
||||
static inline unsigned scsi_prot_sg_count(struct scsi_cmnd *cmd)
|
||||
{
|
||||
return cmd->prot_sdb ? cmd->prot_sdb->table.nents : 0;
|
||||
}
|
||||
|
||||
static inline struct scatterlist *scsi_prot_sglist(struct scsi_cmnd *cmd)
|
||||
{
|
||||
return cmd->prot_sdb ? cmd->prot_sdb->table.sgl : NULL;
|
||||
}
|
||||
|
||||
static inline struct scsi_data_buffer *scsi_prot(struct scsi_cmnd *cmd)
|
||||
{
|
||||
return cmd->prot_sdb;
|
||||
}
|
||||
|
||||
#define scsi_for_each_prot_sg(cmd, sg, nseg, __i) \
|
||||
for_each_sg(scsi_prot_sglist(cmd), sg, nseg, __i)
|
||||
|
||||
#endif /* _SCSI_SCSI_CMND_H */
|
||||
|
|
|
|||
|
|
@ -423,6 +423,11 @@ static inline int scsi_device_enclosure(struct scsi_device *sdev)
|
|||
return sdev->inquiry[6] & (1<<6);
|
||||
}
|
||||
|
||||
static inline int scsi_device_protection(struct scsi_device *sdev)
|
||||
{
|
||||
return sdev->inquiry[5] & (1<<0);
|
||||
}
|
||||
|
||||
#define MODULE_ALIAS_SCSI_DEVICE(type) \
|
||||
MODULE_ALIAS("scsi:t-" __stringify(type) "*")
|
||||
#define SCSI_DEVICE_MODALIAS_FMT "scsi:t-0x%02x"
|
||||
|
|
|
|||
Loading…
Reference in a new issue