]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
Convert shmem_unuse_inode() to use a lockless gang lookup of the radix
authorHugh Dickins <hughd@google.com>
Tue, 26 Jul 2011 10:14:53 +0000 (20:14 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 2 Aug 2011 05:14:25 +0000 (15:14 +1000)
commite5859fe307e3637bc42f27cd5f03b1b2007189f5
treea0f8a87ac5af46ad97af17a162ca4207098afc7a
parente2038d9ca3c1b60c5c410819e2a8e311cc5e8c37
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>
mm/shmem.c