mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
USB storage: sg chaining support
[PATCH] USB storage: sg chaining support Modify usb_stor_access_xfer_buf() to take a pointer to an sg entry pointer, so we can keep track of that instead of passing around an integer index (which we can't use when dealing with multiple scatterlist arrays). Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
53d412fce0
commit
1f6f31a03e
8 changed files with 62 additions and 45 deletions
|
@ -705,7 +705,8 @@ sddr09_read_data(struct us_data *us,
|
|||
unsigned char *buffer;
|
||||
unsigned int lba, maxlba, pba;
|
||||
unsigned int page, pages;
|
||||
unsigned int len, index, offset;
|
||||
unsigned int len, offset;
|
||||
struct scatterlist *sg;
|
||||
int result;
|
||||
|
||||
// Figure out the initial LBA and page
|
||||
|
@ -730,7 +731,8 @@ sddr09_read_data(struct us_data *us,
|
|||
// contiguous LBA's. Another exercise left to the student.
|
||||
|
||||
result = 0;
|
||||
index = offset = 0;
|
||||
offset = 0;
|
||||
sg = NULL;
|
||||
|
||||
while (sectors > 0) {
|
||||
|
||||
|
@ -777,7 +779,7 @@ sddr09_read_data(struct us_data *us,
|
|||
|
||||
// Store the data in the transfer buffer
|
||||
usb_stor_access_xfer_buf(buffer, len, us->srb,
|
||||
&index, &offset, TO_XFER_BUF);
|
||||
&sg, &offset, TO_XFER_BUF);
|
||||
|
||||
page = 0;
|
||||
lba++;
|
||||
|
@ -931,7 +933,8 @@ sddr09_write_data(struct us_data *us,
|
|||
unsigned int pagelen, blocklen;
|
||||
unsigned char *blockbuffer;
|
||||
unsigned char *buffer;
|
||||
unsigned int len, index, offset;
|
||||
unsigned int len, offset;
|
||||
struct scatterlist *sg;
|
||||
int result;
|
||||
|
||||
// Figure out the initial LBA and page
|
||||
|
@ -968,7 +971,8 @@ sddr09_write_data(struct us_data *us,
|
|||
}
|
||||
|
||||
result = 0;
|
||||
index = offset = 0;
|
||||
offset = 0;
|
||||
sg = NULL;
|
||||
|
||||
while (sectors > 0) {
|
||||
|
||||
|
@ -987,7 +991,7 @@ sddr09_write_data(struct us_data *us,
|
|||
|
||||
// Get the data from the transfer buffer
|
||||
usb_stor_access_xfer_buf(buffer, len, us->srb,
|
||||
&index, &offset, FROM_XFER_BUF);
|
||||
&sg, &offset, FROM_XFER_BUF);
|
||||
|
||||
result = sddr09_write_lba(us, lba, page, pages,
|
||||
buffer, blockbuffer);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue