RE: end to end error recovery musings

Moore, Eric
2007-02-27T01:12:07Z

On Monday, February 26, 2007 9:42 AM, Ric Wheeler wrote:
> Which brings us back to a recent discussion at the file
> system workshop on being
> more repair oriented in file system design so we can survive
> situations like
> this a bit more reliably ;-)
>

On the second day of the workshop, there was a presentation given by
Martin K. Petersen on Data Intergrity Feature, which is also called
EEDP(End to End Data Protection), which he presented some
ideas/suggestions of adding an API in linux for this. I have his
presentation if anyone is interested. One thing is scsi mid layer needs
32 byte cdbs support.

mpt fusion supports EEDP for some versions of Fibre products, and we
plan to add this for next generation sas products. We support EEDP in
the windows driver where the driver generates its own tags. Our Linux
driver don't.

Here is our 32 byte passthru structure for SCSI_IO, defined in
mpi_init.h, which as you may notice has some tags and flags for EEDP.

typedef struct _MSG_SCSI_IO32_REQUEST
{
U8 Port; /* 00h
*/
U8 Reserved1; /* 01h
*/
U8 ChainOffset; /* 02h
*/
U8 Function; /* 03h
*/
U8 CDBLength; /* 04h
*/
U8 SenseBufferLength; /* 05h
*/
U8 Flags; /* 06h
*/
U8 MsgFlags; /* 07h
*/
U32 MsgContext; /* 08h
*/
U8 LUN[8]; /* 0Ch
*/
U32 Control; /* 14h
*/
MPI_SCSI_IO32_CDB_UNION CDB; /* 18h
*/
U32 DataLength; /* 38h
*/
U32 BidirectionalDataLength; /* 3Ch
*/
U32 SecondaryReferenceTag; /* 40h
*/
U16 SecondaryApplicationTag; /* 44h
*/
U16 Reserved2; /* 46h
*/
U16 EEDPFlags; /* 48h
*/
U16 ApplicationTagTranslationMask; /* 4Ah
*/
U32 EEDPBlockSize; /* 4Ch
*/
MPI_SCSI_IO32_ADDRESS DeviceAddress; /* 50h
*/
U8 SGLOffset0; /* 58h
*/
U8 SGLOffset1; /* 59h
*/
U8 SGLOffset2; /* 5Ah
*/
U8 SGLOffset3; /* 5Bh
*/
U32 Reserved3; /* 5Ch
*/
U32 Reserved4; /* 60h
*/
U32 SenseBufferLowAddr; /* 64h
*/
SGE_IO_UNION SGL; /* 68h
*/
} MSG_SCSI_IO32_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO32_REQUEST,
SCSIIO32Request_t, MPI_POINTER pSCSIIO32Request_t;