From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Moore, Eric" Subject: RE: end to end error recovery musings Date: Mon, 26 Feb 2007 18:10:57 -0700 Message-ID: <664A4EBB07F29743873A87CF62C26D705D6DDB@NAMAIL4.ad.lsil.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT Return-path: Content-class: urn:content-classes:message Sender: linux-scsi-owner@vger.kernel.org To: ric@emc.com, Alan Cc: Theodore Tso , Neil Brown , "H. Peter Anvin" , Linux-ide , linux-scsi , linux-raid@vger.kernel.org, Tejun Heo , James Bottomley , Mark Lord , Jens Axboe , "Clark, Nathan" , "Singh, Arvinder" , "De Smet, Jochen" , "Farmer, Matt" , linux-fsdevel@vger.kernel.org, "Mizar, Sunita" List-Id: linux-raid.ids 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; From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Moore, Eric" Subject: RE: end to end error recovery musings Date: Mon, 26 Feb 2007 18:10:57 -0700 Message-ID: <664A4EBB07F29743873A87CF62C26D705D6DDB@NAMAIL4.ad.lsil.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT Cc: "Theodore Tso" , "Neil Brown" , "H. Peter Anvin" , "Linux-ide" , "linux-scsi" , , "Tejun Heo" , "James Bottomley" , "Mark Lord" , "Jens Axboe" , "Clark, Nathan" , "Singh, Arvinder" , "De Smet, Jochen" , "Farmer, Matt" , , "Mizar, Sunita" To: , "Alan" Return-path: Content-class: urn:content-classes:message Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org 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;