]> Git Repo - linux.git/commit
mm: Close races between THP migration and PMD numa clearing
authorMel Gorman <[email protected]>
Mon, 7 Oct 2013 10:28:46 +0000 (11:28 +0100)
committerIngo Molnar <[email protected]>
Tue, 29 Oct 2013 10:38:05 +0000 (11:38 +0100)
commit3f926ab945b60a5824369d21add7710622a2eac0
treec3098df81f687abec56d42d864a07c214ff7f017
parentc61109e34f60f6e85bb43c5a1cd51c0e3db40847
mm: Close races between THP migration and PMD numa clearing

THP migration uses the page lock to guard against parallel allocations
but there are cases like this still open

  Task A Task B
  --------------------- ---------------------
  do_huge_pmd_numa_page do_huge_pmd_numa_page
  lock_page
  mpol_misplaced == -1
  unlock_page
  goto clear_pmdnuma
lock_page
mpol_misplaced == 2
migrate_misplaced_transhuge
  pmd = pmd_mknonnuma
  set_pmd_at

During hours of testing, one crashed with weird errors and while I have
no direct evidence, I suspect something like the race above happened.
This patch extends the page lock to being held until the pmd_numa is
cleared to prevent migration starting in parallel while the pmd_numa is
being cleared. It also flushes the old pmd entry and orders pagetable
insertion before rmap insertion.

Signed-off-by: Mel Gorman <[email protected]>
Reviewed-by: Rik van Riel <[email protected]>
Cc: Andrea Arcangeli <[email protected]>
Cc: Johannes Weiner <[email protected]>
Cc: Srikar Dronamraju <[email protected]>
Cc: <[email protected]>
Signed-off-by: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
mm/huge_memory.c
mm/migrate.c
This page took 0.052304 seconds and 4 git commands to generate.