On Sun, 10 Apr 2016 21:45:47 +0300 Sagi Grimberg <sagi@xxxxxxxxxxx> wrote: > >> This is also very interesting for storage targets, which face the same > >> issue. SCST has a mode where it caches some fully constructed SGLs, > >> which is probably very similar to what NICs want to do. > > > > I think a cached allocator for page sets + the scatterlists that > > describe these page sets would not only be useful for SCSI target > > implementations but also for the Linux SCSI initiator. Today the scsi-mq > > code reserves space in each scsi_cmnd for a scatterlist of > > SCSI_MAX_SG_SEGMENTS. If scatterlists would be cached together with page > > sets less memory would be needed per scsi_cmnd. > > If we go down this road how about also attaching some driver opaques > to the page sets? That was the ultimate plan... to leave some opaques bytes left in the page struct that drivers could use. In struct page I would need a pointer back to my page_pool struct and a page flag. Then, I would need room to store the dma_unmap address. (And then some of the usual fields are still needed, like the refcnt, and reusing some of the list constructs). And a zero-copy cross-domain id. For my packet-page idea, I would need a packet length and an offset where data starts (I can derive the "head-room" for encap from these two). -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat Author of http://www.iptv-analyzer.org LinkedIn: http://www.linkedin.com/in/brouer -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>