[PATCH v2 0/3] iommu/io-pgtable-arm-v7s: Use DMA32 zone for page tables
From: willy@infradead.org (Matthew Wilcox)
Date: 2018-11-22 15:16:46
Also in:
linux-iommu, linux-mm, lkml
From: willy@infradead.org (Matthew Wilcox)
Date: 2018-11-22 15:16:46
Also in:
linux-iommu, linux-mm, lkml
On Thu, Nov 22, 2018 at 12:26:02AM -0800, Christoph Hellwig wrote:
On Wed, Nov 21, 2018 at 06:35:58PM -0800, Matthew Wilcox wrote:quoted
I think you should look at using the page_frag allocator here. You can use whatever GFP_DMA flags you like.So I actually tries to use page_frag to solve the XFS unaligned kmalloc allocations problem, and I don't think it is the right hammer for this nail (or any other nail outside of networking). The problem with the page_frag allocator is that it never reuses fragments returned to the page, but only only frees the page once all fragments are freed. This means that if you have some long(er) term allocations you are effectively creating memory leaks.
Yes, your allocations from the page_frag allocator have to have similar lifetimes. I thought that would be ideal for XFS though; as I understood the problem, these were per-IO allocations, and IOs to the same filesystem tend to take roughly the same amount of time. Sure, in an error case, some IOs will take a long time before timing out, but it should be OK to have pages unavailable during that time in these rare situations. What am I missing?