James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> wrote: > On Wed, 2008-07-16 at 15:41 +0200, Elias Oltmanns wrote: >> Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: [...] >> > + memset(buffer + (bufflen - req->data_len), 0, req->data_len); >> >> Sorry, I don't understand that line at all. Surely, we want to zero out >> either the excess data, i.e. buffer -> buffer + req->data_len, or the >> residue, i.e. buffer + req->data_len -> buffer + bufflen. Your patch >> implies that there are bufflen - req->data_len bytes of valid data at >> the beginning of buffer. If this is intentional, please bear with me and >> explain. Otherwise, what about the following patch to 2.6.26? On the >> other hand, the same could probably be achieved by setting req->data_len >> to 0. Oh dear, it would appear that I'm completely lost here. > > I think all you don't understand is simply that for a REQ_BLOCK_PC, the > residue (that's the amount of untransferred, or at least bogus, data) is > returned in req->data_len. Thus, after such a request completes, you > have bufflen-req->data_len good bytes. Oh, I see. The name fooled me there, I suppose. So, the meaning of req->data_len is inverted, as it were, when the LLDD performs the data transfer, right? Thanks for explaining, Elias -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html