On 01/27/2016 10:17 PM, Matthew Wilcox wrote: > From: Matthew Wilcox <willy@xxxxxxxxxxxxxxx> > > 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 <willy@xxxxxxxxxxxxxxx> [...] > 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 <vbabka@xxxxxxx> 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 <vbabka@xxxxxxx> --- 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 -- 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>