On 25 Feb 2009 at 11:38, Mike Christie wrote:

> Ulrich Windl wrote:
> > Hello,
> > 
> > when browsing the open-iscsi feature list, I found:
> > - PDU header Digest;
> >
> Is that from suse's docs or open-iscsi.orgs?

Hi Mike,

it was from the README you had sent me recently. Inside it's dated "Mar 14, 

> > Does this mean that data digests are not supported? A bugzilla at readhat 
> > near mid 
> > of 2007 seems to confirm this.
> Data digests were working but when upstream did the scatterlist changes 
> to the kernel it broke data digests. We have not found the cause yet.

Hmm: I thought it's all about network packages: You put SCSI commands into 
packets, and then checksum the data in the package. When receiving, you check 
packet, then extract the SCSI commands. I don't see where the SCSI layer could 
invalidate network packets here. But I really don't have a deep insight.

> For Red Hat, they do not support them for different reasons depending on 
> the version and arch. For example in RHEL5, the big endien crypto digest 
> code is busted. It needs a fix from upstream, and I think in general 
> there is still some other bugs in the digest code.

OK, naively I's assume that if digests are enabled, but broken, nothing will 
(all packets rejected), and the syslog should complain a lot. Am I right with 

> > 
> > I see the performance impact, but is there another reason against 
> > implementing it? 
> > Can I safely activate it on the target, or will it cause problems?
> > 
> Another reason a lot of distros do not support it is because a common 
> problem we always hit is that users will write out some data, then start 
> modifying it again. But the kernel will normally not do do a sync write 
> when you do a write. So once the write() returns, the kernel is still 
> sending it through the caches, block, scsi, and iscsi layers. If you are 
> writing to the data while the it is working its way through the iscsi 
> layers, the iscsi layer could have done the digest calculation, then you 
> could modify it and now when the target checks it the digest check will 
> fail. And so this happens over and over and you get digest errors all 
> over the place and the iscsi layers fire their error handling and retry 
> and retry, and in the end they just say forget it and do not support 
> data digests.

So information flow seems to be a bit different from what I was expecting. I 
thought the "physical write" is when the kernel issues the SCSI command write 
the HBA (which should be iSCSI here). ISCSI would then build a network packet 
the SCSI command and transfer it, optionally with digests attached.


You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To post to this group, send email to open-iscsi@googlegroups.com
To unsubscribe from this group, send email to 
For more options, visit this group at http://groups.google.com/group/open-iscsi

Reply via email to