Hi Mel, On 05/15/2013 09:24 PM, Mel Gorman wrote:
If it is to be an address space operations sturcture then you'll need a pseudo mapping structure for anonymous pages that are pinned by aio -- similar in principal to how swapper_space is used for managing PageSwapCache or how anon_vma structures can be associated with a page. However, I warn you that you may find that the address_space is the wrong level to register such callbacks, it just seemed like the obvious first choice. A potential alternative implementation is to create a 1:1 association between pages and a long-lived holder that is stored on a hash table (similar style of arrangement as page_waitqueue). A page is looked up in the hash table and if an entry exists, it points to an callback structure to the subsystem holding the pin. It's up to the subsystem to register the callbacks when it is about to pin a page (get_user_pages_longlived(...., &release_ops) and figure out how to release the pin safely.
OK, I'll try to figure out a proper place to put the callbacks. But I think we need to add something new to struct page. I'm just not sure if it is OK. Maybe we can discuss more about it when I send a RFC patch. Thanks for the advices, and I'll try them. Thanks. :) -- 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>