summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorHugh Dickins <hughd@google.com>2011-08-03 16:21:23 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2011-08-03 14:25:23 -1000
commit46f65ec15c6878a2b4a49f6e01b20b201b46a9e4 (patch)
tree3b72804ee87b4a5c7ec86b5059e20ddea82d3c2c /kernel
parent7a5d0fbb29936fad7f17b1cb001b0c33a5f13328 (diff)
downloadlinux-stable-46f65ec15c6878a2b4a49f6e01b20b201b46a9e4.tar.gz
linux-stable-46f65ec15c6878a2b4a49f6e01b20b201b46a9e4.tar.bz2
linux-stable-46f65ec15c6878a2b4a49f6e01b20b201b46a9e4.zip
tmpfs: convert shmem_unuse_inode to radix-swap
Convert shmem_unuse_inode() to use a lockless gang lookup of the radix tree, searching for matching swap. This is somewhat slower than the old method: because of repeated radix tree descents, because of copying entries up, but probably most because the old method noted and skipped once a vector page was cleared of swap. Perhaps we can devise a use of radix tree tagging to achieve that later. shmem_add_to_page_cache() uses shmem_radix_tree_replace() to compensate for the lockless lookup by checking that the expected entry is in place, under lock. It is not very satisfactory to be copying this much from add_to_page_cache_locked(), but I think easier to sell than insisting that every caller of add_to_page_cache*() go through the extras. Signed-off-by: Hugh Dickins <hughd@google.com> Acked-by: Rik van Riel <riel@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
0 files changed, 0 insertions, 0 deletions