asmadeus@codewreck.org wrote:
There should be a `if (slot == folioq_nr_slots(folioq)) break` check somewhere as well? Or is the iov_iter guaranteed to always 1/ have some data and 2/ either be big enough or have remaining data in a step?
We should handle both cases. I think the other iteration functions will. iov_iter_extractg_folioq_pages(), for example, wraps it in a conditional:
if (offset < fsize) { part = umin(part, umin(maxsize - extracted, fsize - offset)); i->count -= part; i->iov_offset += part; extracted += part;
p[nr++] = folio_page(folio, offset / PAGE_SIZE); }
David