Andy Warner wrote:
Jeff Garzik wrote:
quoted
[...]
quoted
In libata-core.c:ata_sg_init_one() there is:
WARN_ON(buflen > PAGE_SIZE);
[...]
A non-scatter-gather transfer is assumed to be one page in length, using
only a single 'struct scatterlist' element. You could probably "cheat"
and indicate the scatterlist element is longer than PAGE_SIZE, but make
sure to review all code paths...
Bear with me, if I'm being dense, but why is that a valid
assumption ? Is it because in most instances, such requests
are made by filesystem code, as opposed to arbitrary user
initiated I/O ?
A struct scatterlist is a list of page/offset/length triplets, so it
breaks the model if a triplet extends past a page boundary.
Jeff