From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:53723) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TO2gd-000642-VF for qemu-devel@nongnu.org; Tue, 16 Oct 2012 04:39:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TO2gX-0002y8-VR for qemu-devel@nongnu.org; Tue, 16 Oct 2012 04:39:39 -0400 Received: from cantor2.suse.de ([195.135.220.15]:45448 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TO2gX-0002xt-PH for qemu-devel@nongnu.org; Tue, 16 Oct 2012 04:39:33 -0400 Date: Tue, 16 Oct 2012 09:39:27 +0100 From: Mel Gorman Message-ID: <20121016083927.GG29125@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline Subject: [Qemu-devel] [PATCH] mm: compaction: Correct the nr_strict_isolated check for CMA List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andrew Morton Cc: Richard Davies , KVM , Arnd Bergmann , QEMU-devel , LKML , Linux-MM , Avi Kivity , Shaohua Li , Arm Kernel Mailing List Thierry reported that the "iron out" patch for isolate_freepages_block() had problems due to the strict check being too strict with "mm: compaction: Iron out isolate_freepages_block() and isolate_freepages_range() -fix1". It's possible that more pages than necessary are isolated but the check still fails and I missed that this fix was not picked up before RC1. This same problem has been identified in 3.7-RC1 by Tony Prisk and should be addressed by the following patch. Signed-off-by: Mel Gorman Tested-by: Tony Prisk --- mm/compaction.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/compaction.c b/mm/compaction.c index 2c4ce17..9eef558 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -346,7 +346,7 @@ static unsigned long isolate_freepages_block(struct compact_control *cc, * pages requested were isolated. If there were any failures, 0 is * returned and CMA will fail. */ - if (strict && nr_strict_required != total_isolated) + if (strict && nr_strict_required > total_isolated) total_isolated = 0; if (locked)