From a5aeb1e28470f54399d9ff23d0c1caa24b2c68d4 Mon Sep 17 00:00:00 2001 From: Johannes Weiner Date: Fri, 22 Feb 2013 16:32:12 -0800 Subject: [PATCH] --- yaml --- r: 356486 b: refs/heads/master c: d778df51c09264076fe0208c099ef7d428f21790 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/linux/swap.h | 2 +- trunk/mm/vmscan.c | 10 ++++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 399441bdcd17..d971b5857148 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7c5bd705d8f983ae1868a126956f5aa3a6702e3f +refs/heads/master: d778df51c09264076fe0208c099ef7d428f21790 diff --git a/trunk/include/linux/swap.h b/trunk/include/linux/swap.h index 68df9c17fbbb..8c66486a8ca8 100644 --- a/trunk/include/linux/swap.h +++ b/trunk/include/linux/swap.h @@ -156,7 +156,7 @@ enum { SWP_SCANNING = (1 << 8), /* refcount in scan_swap_map */ }; -#define SWAP_CLUSTER_MAX 32 +#define SWAP_CLUSTER_MAX 32UL #define COMPACT_CLUSTER_MAX SWAP_CLUSTER_MAX /* diff --git a/trunk/mm/vmscan.c b/trunk/mm/vmscan.c index ff842d9a7714..e4521ba1ddd0 100644 --- a/trunk/mm/vmscan.c +++ b/trunk/mm/vmscan.c @@ -1761,15 +1761,17 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc, out: for_each_evictable_lru(lru) { int file = is_file_lru(lru); + unsigned long size; unsigned long scan; - scan = get_lru_size(lruvec, lru); + size = get_lru_size(lruvec, lru); if (sc->priority || noswap || !vmscan_swappiness(sc)) { - scan >>= sc->priority; + scan = size >> sc->priority; if (!scan && force_scan) - scan = SWAP_CLUSTER_MAX; + scan = min(size, SWAP_CLUSTER_MAX); scan = div64_u64(scan * fraction[file], denominator); - } + } else + scan = size; nr[lru] = scan; } }