mm: mempolicy: Hide MPOL_NOOP and MPOL_MF_LAZY from userspace for now
authorMel Gorman <mgorman@suse.de>
Fri, 16 Nov 2012 09:37:58 +0000 (09:37 +0000)
committerMel Gorman <mgorman@suse.de>
Tue, 11 Dec 2012 14:42:44 +0000 (14:42 +0000)
The use of MPOL_NOOP and MPOL_MF_LAZY to allow an application to
explicitly request lazy migration is a good idea but the actual
API has not been well reviewed and once released we have to support it.
For now this patch prevents an application using the services. This
will need to be revisited.

Signed-off-by: Mel Gorman <mgorman@suse.de>
include/uapi/linux/mempolicy.h
mm/mempolicy.c

index 6a1baae3775d0eb5a2bdad79b5eb01f3bb09977b..16fb4e6efbc400ac81660b78bb936d98d38d8139 100644 (file)
@@ -21,7 +21,6 @@ enum {
        MPOL_BIND,
        MPOL_INTERLEAVE,
        MPOL_LOCAL,
-       MPOL_NOOP,              /* retain existing policy for range */
        MPOL_MAX,       /* always last member of enum */
 };
 
@@ -57,8 +56,7 @@ enum mpol_rebind_step {
 
 #define MPOL_MF_VALID  (MPOL_MF_STRICT   |     \
                         MPOL_MF_MOVE     |     \
-                        MPOL_MF_MOVE_ALL |     \
-                        MPOL_MF_LAZY)
+                        MPOL_MF_MOVE_ALL)
 
 /*
  * Internal flags that share the struct mempolicy flags word with
index 75d4600a5e928e805f91b0596883f900eaa9bb6f..a7a62fe7c2803e395b6db3a47a51fbf30b6212e4 100644 (file)
@@ -252,7 +252,7 @@ static struct mempolicy *mpol_new(unsigned short mode, unsigned short flags,
        pr_debug("setting mode %d flags %d nodes[0] %lx\n",
                 mode, flags, nodes ? nodes_addr(*nodes)[0] : -1);
 
-       if (mode == MPOL_DEFAULT || mode == MPOL_NOOP) {
+       if (mode == MPOL_DEFAULT) {
                if (nodes && !nodes_empty(*nodes))
                        return ERR_PTR(-EINVAL);
                return NULL;
@@ -1186,7 +1186,7 @@ static long do_mbind(unsigned long start, unsigned long len,
        if (start & ~PAGE_MASK)
                return -EINVAL;
 
-       if (mode == MPOL_DEFAULT || mode == MPOL_NOOP)
+       if (mode == MPOL_DEFAULT)
                flags &= ~MPOL_MF_STRICT;
 
        len = (len + PAGE_SIZE - 1) & PAGE_MASK;
@@ -1241,7 +1241,7 @@ static long do_mbind(unsigned long start, unsigned long len,
                          flags | MPOL_MF_INVERT, &pagelist);
 
        err = PTR_ERR(vma);     /* maybe ... */
-       if (!IS_ERR(vma) && mode != MPOL_NOOP)
+       if (!IS_ERR(vma))
                err = mbind_range(mm, start, end, new);
 
        if (!err) {
@@ -2530,7 +2530,6 @@ static const char * const policy_modes[] =
        [MPOL_BIND]       = "bind",
        [MPOL_INTERLEAVE] = "interleave",
        [MPOL_LOCAL]      = "local",
-       [MPOL_NOOP]       = "noop",     /* should not actually be used */
 };
 
 
@@ -2581,7 +2580,7 @@ int mpol_parse_str(char *str, struct mempolicy **mpol, int no_context)
                        break;
                }
        }
-       if (mode >= MPOL_MAX || mode == MPOL_NOOP)
+       if (mode >= MPOL_MAX)
                goto out;
 
        switch (mode) {