Bläddra i källkod

mm/swapfile.c: do not skip lowest_bit in scan_swap_map() scan loop

In the second half of scan_swap_map()'s scan loop, offset is set to
si->lowest_bit and then incremented before entering the loop for the
first time, causing si->swap_map[si->lowest_bit] to be skipped.

Signed-off-by: Jamie Liu <jamieliu@google.com>
Cc: Shaohua Li <shli@fusionio.com>
Acked-by: Hugh Dickins <hughd@google.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Jamie Liu 11 år sedan
förälder
incheckning
a5998061da
1 ändrade filer med 2 tillägg och 1 borttagningar
  1. 2 1
      mm/swapfile.c

+ 2 - 1
mm/swapfile.c

@@ -616,7 +616,7 @@ scan:
 		}
 		}
 	}
 	}
 	offset = si->lowest_bit;
 	offset = si->lowest_bit;
-	while (++offset < scan_base) {
+	while (offset < scan_base) {
 		if (!si->swap_map[offset]) {
 		if (!si->swap_map[offset]) {
 			spin_lock(&si->lock);
 			spin_lock(&si->lock);
 			goto checks;
 			goto checks;
@@ -629,6 +629,7 @@ scan:
 			cond_resched();
 			cond_resched();
 			latency_ration = LATENCY_LIMIT;
 			latency_ration = LATENCY_LIMIT;
 		}
 		}
+		offset++;
 	}
 	}
 	spin_lock(&si->lock);
 	spin_lock(&si->lock);