On 01/27/2016 10:17 PM, Matthew Wilcox wrote:
> From: Matthew Wilcox <wi...@linux.intel.com>
> 
> Instead of a 'goto restart', we can now use radix_tree_iter_retry()
> to restart from our current position.  This will make a difference
> when there are more ways to happen across an indirect pointer.  And it
> eliminates some confusing gotos.
> 
> Signed-off-by: Matthew Wilcox <wi...@linux.intel.com>

[...]

> diff --git a/mm/shmem.c b/mm/shmem.c
> index fa2ceb2d2655..6ec14b70d82d 100644
> --- a/mm/shmem.c
> +++ b/mm/shmem.c
> @@ -388,8 +388,10 @@ restart:
>                * don't need to reset the counter, nor do we risk infinite
>                * restarts.
>                */
> -             if (radix_tree_deref_retry(page))
> -                     goto restart;
> +             if (radix_tree_deref_retry(page)) {
> +                     slot = radix_tree_iter_retry(&iter);
> +                     continue;
> +             }
>  
>               if (radix_tree_exceptional_entry(page))
>                       swapped++;

This should be applied on top. There are no restarts anymore.

----8<----
>From 3b0bdd370b57fb6d83b213e140cd1fb0e8962af8 Mon Sep 17 00:00:00 2001
From: Vlastimil Babka <vba...@suse.cz>
Date: Fri, 29 Jan 2016 15:41:31 +0100
Subject: [PATCH] mm: Use radix_tree_iter_retry()-fix

Remove now-obsolete-and-misleading comment.

Signed-off-by: Vlastimil Babka <vba...@suse.cz>
---
 mm/shmem.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/mm/shmem.c b/mm/shmem.c
index 8f89abd4eaee..4d758938340c 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -382,11 +382,6 @@ unsigned long shmem_partial_swap_usage(struct 
address_space *mapping,
 
                page = radix_tree_deref_slot(slot);
 
-               /*
-                * This should only be possible to happen at index 0, so we
-                * don't need to reset the counter, nor do we risk infinite
-                * restarts.
-                */
                if (radix_tree_deref_retry(page)) {
                        slot = radix_tree_iter_retry(&iter);
                        continue;
-- 
2.7.0



Reply via email to