Re: [PATCH 1/2] vmsplice: unmap gifted pages for recipient
From: Robert Jennings <hidden>
Date: 2013-10-08 19:48:19
Also in:
linux-fsdevel, lkml
* Dave Hansen (dave@sr71.net) wrote:
On 10/07/2013 01:21 PM, Robert C Jennings wrote:quoted
+ } else { + if (vma) + zap_page_range(vma, + user_start, + (user_end - + user_start), + NULL); + vma = find_vma_intersection( + current->mm, + useraddr, + (useraddr + + PAGE_SIZE)); + if (!IS_ERR_OR_NULL(vma)) { + user_start = useraddr; + user_end = (useraddr + + PAGE_SIZE); + } else + vma = NULL; + }This is pretty unspeakably hideous. Was there truly no better way to do this?
I was hoping to find a better way to coalesce pipe buffers and zap entire VMAs (and it needs better documentation but your argument is with structure and I agree). I would love suggestions for improving this but that is not to say that I've abandoned it; I'm still looking for ways to make this cleaner. Doing find_vma() on a single page in the VMA rather than on each and then zapping once provides a 50% runtime reduction for the writer when tested with a 256MB vmsplice operation. Based on the result I felt that coalescing was justfied but the implementation is ugly. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>