From 995b3fb21722a63bf0478d85316e8b59f28c6efc Mon Sep 17 00:00:00 2001 From: Christoph Lameter Date: Thu, 16 Mar 2006 23:03:59 -0800 Subject: [PATCH] --- yaml --- r: 21079 b: refs/heads/master c: 90036ee5938d89638e80f4d0d0700d0f2dbd4a6a h: refs/heads/master i: 21077: 88568d8d8906fe130e3359ab0409249e748a041c 21075: 7eea5e221af67064f6a4ed2b81fee264f35ef44d 21071: 3b88f366059b400e05132ee98a5664990ac4720c v: v3 --- [refs] | 2 +- trunk/mm/mempolicy.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 54cdd0a33503..efa1e734a525 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e0e8eb54d8ae0c4cfd1d297f6351b08a7f635c5f +refs/heads/master: 90036ee5938d89638e80f4d0d0700d0f2dbd4a6a diff --git a/trunk/mm/mempolicy.c b/trunk/mm/mempolicy.c index 2a8206009422..b21869a39f0b 100644 --- a/trunk/mm/mempolicy.c +++ b/trunk/mm/mempolicy.c @@ -330,9 +330,19 @@ check_range(struct mm_struct *mm, unsigned long start, unsigned long end, int err; struct vm_area_struct *first, *vma, *prev; - /* Clear the LRU lists so pages can be isolated */ - if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) + if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) { + /* Must have swap device for migration */ + if (nr_swap_pages <= 0) + return ERR_PTR(-ENODEV); + + /* + * Clear the LRU lists so pages can be isolated. + * Note that pages may be moved off the LRU after we have + * drained them. Those pages will fail to migrate like other + * pages that may be busy. + */ lru_add_drain_all(); + } first = find_vma(mm, start); if (!first)