Viacheslav Dubeyko <Slava.Dubeyko@xxxxxxx> wrote: > > struct { > > struct page **pages; > > Do we still operate by pages here? It looks like we need to rework it somehow. One of the points of these patches is to rework this, working towards reducing everything to just an iterator where possible, using a segmented list as the actual buffers. One of the things hopefully to be discussed at LSF/MM is how we might combine struct folio_queue, struct bvec[] and struct scatterlist into something that can hold references to more general pieces of memory and not just folios - and that might be something we can use here for handing buffers about. Anyway, my aim is to get all references to pages and folios (as far as possible) out of 9p, afs, cifs and ceph - delegating all of that to netfslib for ceph (rbd is slightly different - but I've completed the transformation there). Netfslib will pass an iterator to each subrequest describing the buffer, and we might need to go from there to another iterator describing a bounce buffer for transport encryption, but from there, we should pass the iterator directly to the socket. Further, I would like to make it so that we can link these buffers together such that we can fabricate an entire message within a single iterator - and then we no longer need to cork the TCP socket. David