On Tue, 5 Feb 2008, Boaz Harrosh wrote:
> > However the interface to usb_stor_access_xfer_buf() will have to change
> > slightly. Right now if it sees that *sgptr is NULL, it assumes this
> > means it should start at the beginning of the s-g buffer. But with
> > Boaz's change, *sgptr == NULL means the transfer has reached the end of
> > the buffer. So I'll have to go through and audit all the callers.
> >
> > Alan Stern
> >
> > -
> No it does not, this as not changed. Please look again.
You look again. Your patched code goes like this:
struct scatterlist *sg = *sgptr;
if (!sg)
sg = (struct scatterlist *) srb->request_buffer;
Hence if *sgptr is NULL upon entry, it is taken to mean that the
transfer should start at the beginning of the s-g buffer.
/* This loop handles a single s-g list entry, which may
* include multiple pages. Find the initial page structure
* and the starting offset within the page, and update
* the *offset and *index values for the next loop. */
cnt = 0;
while (cnt < buflen && sg) {
Hence if sg is NULL, it indicates the end of the buffer has been
reached. And then down near the end of the routine:
*sgptr = sg;
Hence if the end is reached and the caller makes another call to try
transferring more data, the additional data will get stored back at the
beginning of the buffer.
> Note that this patch was tested and working. It is a bug
> in v2.2.24 and it should be accepted already. One way or
> the other.
>
> Callers of usb_stor_access_xfer_buf() need not change.
> Matthew Dharm should decide if he wants the WARN_ON in
> usb_stor_set_xfer_buf() or not and be done with it.
>
> I have found and fixed the bug, but it is not a SCSI
> related bug, and it is not do to any scsi changes. It
> is a bug from the SG changes of early 2.6.24. Please
> take it through the USB tree. Feel free to change it
> the way you like it, and submit it.
I will post a new version of this which handles all these issues.
Expect it in a day or so.
Alan Stern
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html