From 505f7dd2700a934b8f342f578dc68a1c495646fc Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Wed, 2 Apr 2003 16:26:13 -0800 Subject: [PATCH] [PATCH] tmpfs blk_congestion_wait fix From: Hugh Dickins The blk_congestion_waits in shmem_getpage are appropriate when the error is -ENOMEM, but not when the error is -EEXIST. So add that test in the first instance, but omit it all in the second instance. --- mm/shmem.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index 7347bfeda3823..db89937437cf9 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -839,7 +839,8 @@ repeat: SetPageUptodate(filepage); set_page_dirty(filepage); swap_free(swap); - } else if (move_from_swap_cache(swappage, idx, mapping) == 0) { + } else if (!(error = move_from_swap_cache( + swappage, idx, mapping))) { shmem_swp_set(info, entry, 0); shmem_swp_unmap(entry); spin_unlock(&info->lock); @@ -850,8 +851,10 @@ repeat: spin_unlock(&info->lock); unlock_page(swappage); page_cache_release(swappage); - /* let kswapd refresh zone for GFP_ATOMICs */ - blk_congestion_wait(WRITE, HZ/50); + if (error == -ENOMEM) { + /* let kswapd refresh zone for GFP_ATOMICs */ + blk_congestion_wait(WRITE, HZ/50); + } goto repeat; } } else if (sgp == SGP_READ && !filepage) { @@ -905,8 +908,6 @@ repeat: filepage = NULL; if (error) goto failed; - /* let kswapd refresh zone for GFP_ATOMICs */ - blk_congestion_wait(WRITE, HZ / 50); goto repeat; } } -- 2.53.0