summaryrefslogtreecommitdiffstats
path: root/fs/efs
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-12-20 05:11:12 +0900
committerLinus Torvalds <torvalds@linux-foundation.org>2013-12-22 11:03:08 -0800
commit3dc9acb67600393249a795934ccdfc291a200e6b (patch)
tree1187e9b17ef208f2245700b933c55af4159e0af7 /fs/efs
parentb7000adef17a5cce85636e40fa2c2d9851a89e28 (diff)
downloadop-kernel-dev-3dc9acb67600393249a795934ccdfc291a200e6b.zip
op-kernel-dev-3dc9acb67600393249a795934ccdfc291a200e6b.tar.gz
aio: clean up and fix aio_setup_ring page mapping
Since commit 36bc08cc01709 ("fs/aio: Add support to aio ring pages migration") the aio ring setup code has used a special per-ring backing inode for the page allocations, rather than just using random anonymous pages. However, rather than remembering the pages as it allocated them, it would allocate the pages, insert them into the file mapping (dirty, so that they couldn't be free'd), and then forget about them. And then to look them up again, it would mmap the mapping, and then use "get_user_pages()" to get back an array of the pages we just created. Now, not only is that incredibly inefficient, it also leaked all the pages if the mmap failed (which could happen due to excessive number of mappings, for example). So clean it all up, making it much more straightforward. Also remove some left-overs of the previous (broken) mm_populate() usage that was removed in commit d6c355c7dabc ("aio: fix race in ring buffer page lookup introduced by page migration support") but left the pointless and now misleading MAP_POPULATE flag around. Tested-and-acked-by: Benjamin LaHaise <bcrl@kvack.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/efs')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud