diff options
-rw-r--r-- | Documentation/vm/numa_memory_policy.txt | 4 | ||||
-rw-r--r-- | include/linux/mempolicy.h | 6 | ||||
-rw-r--r-- | mm/mempolicy.c | 46 |
3 files changed, 26 insertions, 30 deletions
diff --git a/Documentation/vm/numa_memory_policy.txt b/Documentation/vm/numa_memory_policy.txt index 1c7dd21623d2..27b9507a3769 100644 --- a/Documentation/vm/numa_memory_policy.txt +++ b/Documentation/vm/numa_memory_policy.txt | |||
@@ -145,10 +145,6 @@ Components of Memory Policies | |||
145 | structure, struct mempolicy. Details of this structure will be discussed | 145 | structure, struct mempolicy. Details of this structure will be discussed |
146 | in context, below, as required to explain the behavior. | 146 | in context, below, as required to explain the behavior. |
147 | 147 | ||
148 | Note: in some functions AND in the struct mempolicy itself, the mode | ||
149 | is called "policy". However, to avoid confusion with the policy tuple, | ||
150 | this document will continue to use the term "mode". | ||
151 | |||
152 | Linux memory policy supports the following 4 behavioral modes: | 148 | Linux memory policy supports the following 4 behavioral modes: |
153 | 149 | ||
154 | Default Mode--MPOL_DEFAULT: The behavior specified by this mode is | 150 | Default Mode--MPOL_DEFAULT: The behavior specified by this mode is |
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h index 5e19c2275a6f..9080fab1426d 100644 --- a/include/linux/mempolicy.h +++ b/include/linux/mempolicy.h | |||
@@ -80,7 +80,7 @@ struct mm_struct; | |||
80 | */ | 80 | */ |
81 | struct mempolicy { | 81 | struct mempolicy { |
82 | atomic_t refcnt; | 82 | atomic_t refcnt; |
83 | unsigned short policy; /* See MPOL_* above */ | 83 | unsigned short mode; /* See MPOL_* above */ |
84 | unsigned short flags; /* See set_mempolicy() MPOL_F_* above */ | 84 | unsigned short flags; /* See set_mempolicy() MPOL_F_* above */ |
85 | union { | 85 | union { |
86 | short preferred_node; /* preferred */ | 86 | short preferred_node; /* preferred */ |
@@ -149,7 +149,7 @@ struct shared_policy { | |||
149 | spinlock_t lock; | 149 | spinlock_t lock; |
150 | }; | 150 | }; |
151 | 151 | ||
152 | void mpol_shared_policy_init(struct shared_policy *info, unsigned short policy, | 152 | void mpol_shared_policy_init(struct shared_policy *info, unsigned short mode, |
153 | unsigned short flags, nodemask_t *nodes); | 153 | unsigned short flags, nodemask_t *nodes); |
154 | int mpol_set_shared_policy(struct shared_policy *info, | 154 | int mpol_set_shared_policy(struct shared_policy *info, |
155 | struct vm_area_struct *vma, | 155 | struct vm_area_struct *vma, |
@@ -213,7 +213,7 @@ static inline int mpol_set_shared_policy(struct shared_policy *info, | |||
213 | } | 213 | } |
214 | 214 | ||
215 | static inline void mpol_shared_policy_init(struct shared_policy *info, | 215 | static inline void mpol_shared_policy_init(struct shared_policy *info, |
216 | unsigned short policy, unsigned short flags, nodemask_t *nodes) | 216 | unsigned short mode, unsigned short flags, nodemask_t *nodes) |
217 | { | 217 | { |
218 | } | 218 | } |
219 | 219 | ||
diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 8924aaf4665c..5e7eea2dc8b4 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c | |||
@@ -106,7 +106,7 @@ enum zone_type policy_zone = 0; | |||
106 | 106 | ||
107 | struct mempolicy default_policy = { | 107 | struct mempolicy default_policy = { |
108 | .refcnt = ATOMIC_INIT(1), /* never free it */ | 108 | .refcnt = ATOMIC_INIT(1), /* never free it */ |
109 | .policy = MPOL_DEFAULT, | 109 | .mode = MPOL_DEFAULT, |
110 | }; | 110 | }; |
111 | 111 | ||
112 | static const struct mempolicy_operations { | 112 | static const struct mempolicy_operations { |
@@ -211,7 +211,7 @@ static struct mempolicy *mpol_new(unsigned short mode, unsigned short flags, | |||
211 | if (!policy) | 211 | if (!policy) |
212 | return ERR_PTR(-ENOMEM); | 212 | return ERR_PTR(-ENOMEM); |
213 | atomic_set(&policy->refcnt, 1); | 213 | atomic_set(&policy->refcnt, 1); |
214 | policy->policy = mode; | 214 | policy->mode = mode; |
215 | policy->flags = flags; | 215 | policy->flags = flags; |
216 | 216 | ||
217 | if (nodes) { | 217 | if (nodes) { |
@@ -302,7 +302,7 @@ static void mpol_rebind_policy(struct mempolicy *pol, | |||
302 | if (!mpol_store_user_nodemask(pol) && | 302 | if (!mpol_store_user_nodemask(pol) && |
303 | nodes_equal(pol->w.cpuset_mems_allowed, *newmask)) | 303 | nodes_equal(pol->w.cpuset_mems_allowed, *newmask)) |
304 | return; | 304 | return; |
305 | mpol_ops[pol->policy].rebind(pol, newmask); | 305 | mpol_ops[pol->mode].rebind(pol, newmask); |
306 | } | 306 | } |
307 | 307 | ||
308 | /* | 308 | /* |
@@ -608,7 +608,7 @@ static long do_set_mempolicy(unsigned short mode, unsigned short flags, | |||
608 | mpol_put(current->mempolicy); | 608 | mpol_put(current->mempolicy); |
609 | current->mempolicy = new; | 609 | current->mempolicy = new; |
610 | mpol_set_task_struct_flag(); | 610 | mpol_set_task_struct_flag(); |
611 | if (new && new->policy == MPOL_INTERLEAVE && | 611 | if (new && new->mode == MPOL_INTERLEAVE && |
612 | nodes_weight(new->v.nodes)) | 612 | nodes_weight(new->v.nodes)) |
613 | current->il_next = first_node(new->v.nodes); | 613 | current->il_next = first_node(new->v.nodes); |
614 | if (mm) | 614 | if (mm) |
@@ -621,7 +621,7 @@ static long do_set_mempolicy(unsigned short mode, unsigned short flags, | |||
621 | static void get_zonemask(struct mempolicy *p, nodemask_t *nodes) | 621 | static void get_zonemask(struct mempolicy *p, nodemask_t *nodes) |
622 | { | 622 | { |
623 | nodes_clear(*nodes); | 623 | nodes_clear(*nodes); |
624 | switch (p->policy) { | 624 | switch (p->mode) { |
625 | case MPOL_DEFAULT: | 625 | case MPOL_DEFAULT: |
626 | break; | 626 | break; |
627 | case MPOL_BIND: | 627 | case MPOL_BIND: |
@@ -700,14 +700,14 @@ static long do_get_mempolicy(int *policy, nodemask_t *nmask, | |||
700 | goto out; | 700 | goto out; |
701 | *policy = err; | 701 | *policy = err; |
702 | } else if (pol == current->mempolicy && | 702 | } else if (pol == current->mempolicy && |
703 | pol->policy == MPOL_INTERLEAVE) { | 703 | pol->mode == MPOL_INTERLEAVE) { |
704 | *policy = current->il_next; | 704 | *policy = current->il_next; |
705 | } else { | 705 | } else { |
706 | err = -EINVAL; | 706 | err = -EINVAL; |
707 | goto out; | 707 | goto out; |
708 | } | 708 | } |
709 | } else | 709 | } else |
710 | *policy = pol->policy | pol->flags; | 710 | *policy = pol->mode | pol->flags; |
711 | 711 | ||
712 | if (vma) { | 712 | if (vma) { |
713 | up_read(¤t->mm->mmap_sem); | 713 | up_read(¤t->mm->mmap_sem); |
@@ -1276,7 +1276,7 @@ static struct mempolicy *get_vma_policy(struct task_struct *task, | |||
1276 | pol = vpol; | 1276 | pol = vpol; |
1277 | shared_pol = 1; /* if pol non-NULL, add ref below */ | 1277 | shared_pol = 1; /* if pol non-NULL, add ref below */ |
1278 | } else if (vma->vm_policy && | 1278 | } else if (vma->vm_policy && |
1279 | vma->vm_policy->policy != MPOL_DEFAULT) | 1279 | vma->vm_policy->mode != MPOL_DEFAULT) |
1280 | pol = vma->vm_policy; | 1280 | pol = vma->vm_policy; |
1281 | } | 1281 | } |
1282 | if (!pol) | 1282 | if (!pol) |
@@ -1290,7 +1290,7 @@ static struct mempolicy *get_vma_policy(struct task_struct *task, | |||
1290 | static nodemask_t *nodemask_policy(gfp_t gfp, struct mempolicy *policy) | 1290 | static nodemask_t *nodemask_policy(gfp_t gfp, struct mempolicy *policy) |
1291 | { | 1291 | { |
1292 | /* Lower zones don't get a nodemask applied for MPOL_BIND */ | 1292 | /* Lower zones don't get a nodemask applied for MPOL_BIND */ |
1293 | if (unlikely(policy->policy == MPOL_BIND) && | 1293 | if (unlikely(policy->mode == MPOL_BIND) && |
1294 | gfp_zone(gfp) >= policy_zone && | 1294 | gfp_zone(gfp) >= policy_zone && |
1295 | cpuset_nodemask_valid_mems_allowed(&policy->v.nodes)) | 1295 | cpuset_nodemask_valid_mems_allowed(&policy->v.nodes)) |
1296 | return &policy->v.nodes; | 1296 | return &policy->v.nodes; |
@@ -1303,7 +1303,7 @@ static struct zonelist *zonelist_policy(gfp_t gfp, struct mempolicy *policy) | |||
1303 | { | 1303 | { |
1304 | int nd; | 1304 | int nd; |
1305 | 1305 | ||
1306 | switch (policy->policy) { | 1306 | switch (policy->mode) { |
1307 | case MPOL_PREFERRED: | 1307 | case MPOL_PREFERRED: |
1308 | nd = policy->v.preferred_node; | 1308 | nd = policy->v.preferred_node; |
1309 | if (nd < 0) | 1309 | if (nd < 0) |
@@ -1353,7 +1353,7 @@ static unsigned interleave_nodes(struct mempolicy *policy) | |||
1353 | */ | 1353 | */ |
1354 | unsigned slab_node(struct mempolicy *policy) | 1354 | unsigned slab_node(struct mempolicy *policy) |
1355 | { | 1355 | { |
1356 | unsigned short pol = policy ? policy->policy : MPOL_DEFAULT; | 1356 | unsigned short pol = policy ? policy->mode : MPOL_DEFAULT; |
1357 | 1357 | ||
1358 | switch (pol) { | 1358 | switch (pol) { |
1359 | case MPOL_INTERLEAVE: | 1359 | case MPOL_INTERLEAVE: |
@@ -1454,9 +1454,9 @@ struct zonelist *huge_zonelist(struct vm_area_struct *vma, unsigned long addr, | |||
1454 | 1454 | ||
1455 | *mpol = NULL; /* probably no unref needed */ | 1455 | *mpol = NULL; /* probably no unref needed */ |
1456 | *nodemask = NULL; /* assume !MPOL_BIND */ | 1456 | *nodemask = NULL; /* assume !MPOL_BIND */ |
1457 | if (pol->policy == MPOL_BIND) { | 1457 | if (pol->mode == MPOL_BIND) { |
1458 | *nodemask = &pol->v.nodes; | 1458 | *nodemask = &pol->v.nodes; |
1459 | } else if (pol->policy == MPOL_INTERLEAVE) { | 1459 | } else if (pol->mode == MPOL_INTERLEAVE) { |
1460 | unsigned nid; | 1460 | unsigned nid; |
1461 | 1461 | ||
1462 | nid = interleave_nid(pol, vma, addr, HPAGE_SHIFT); | 1462 | nid = interleave_nid(pol, vma, addr, HPAGE_SHIFT); |
@@ -1468,7 +1468,7 @@ struct zonelist *huge_zonelist(struct vm_area_struct *vma, unsigned long addr, | |||
1468 | 1468 | ||
1469 | zl = zonelist_policy(GFP_HIGHUSER, pol); | 1469 | zl = zonelist_policy(GFP_HIGHUSER, pol); |
1470 | if (unlikely(pol != &default_policy && pol != current->mempolicy)) { | 1470 | if (unlikely(pol != &default_policy && pol != current->mempolicy)) { |
1471 | if (pol->policy != MPOL_BIND) | 1471 | if (pol->mode != MPOL_BIND) |
1472 | __mpol_put(pol); /* finished with pol */ | 1472 | __mpol_put(pol); /* finished with pol */ |
1473 | else | 1473 | else |
1474 | *mpol = pol; /* unref needed after allocation */ | 1474 | *mpol = pol; /* unref needed after allocation */ |
@@ -1522,7 +1522,7 @@ alloc_page_vma(gfp_t gfp, struct vm_area_struct *vma, unsigned long addr) | |||
1522 | 1522 | ||
1523 | cpuset_update_task_memory_state(); | 1523 | cpuset_update_task_memory_state(); |
1524 | 1524 | ||
1525 | if (unlikely(pol->policy == MPOL_INTERLEAVE)) { | 1525 | if (unlikely(pol->mode == MPOL_INTERLEAVE)) { |
1526 | unsigned nid; | 1526 | unsigned nid; |
1527 | 1527 | ||
1528 | nid = interleave_nid(pol, vma, addr, PAGE_SHIFT); | 1528 | nid = interleave_nid(pol, vma, addr, PAGE_SHIFT); |
@@ -1574,7 +1574,7 @@ struct page *alloc_pages_current(gfp_t gfp, unsigned order) | |||
1574 | cpuset_update_task_memory_state(); | 1574 | cpuset_update_task_memory_state(); |
1575 | if (!pol || in_interrupt() || (gfp & __GFP_THISNODE)) | 1575 | if (!pol || in_interrupt() || (gfp & __GFP_THISNODE)) |
1576 | pol = &default_policy; | 1576 | pol = &default_policy; |
1577 | if (pol->policy == MPOL_INTERLEAVE) | 1577 | if (pol->mode == MPOL_INTERLEAVE) |
1578 | return alloc_page_interleave(gfp, order, interleave_nodes(pol)); | 1578 | return alloc_page_interleave(gfp, order, interleave_nodes(pol)); |
1579 | return __alloc_pages_nodemask(gfp, order, | 1579 | return __alloc_pages_nodemask(gfp, order, |
1580 | zonelist_policy(gfp, pol), nodemask_policy(gfp, pol)); | 1580 | zonelist_policy(gfp, pol), nodemask_policy(gfp, pol)); |
@@ -1620,11 +1620,11 @@ int __mpol_equal(struct mempolicy *a, struct mempolicy *b) | |||
1620 | { | 1620 | { |
1621 | if (!a || !b) | 1621 | if (!a || !b) |
1622 | return 0; | 1622 | return 0; |
1623 | if (a->policy != b->policy) | 1623 | if (a->mode != b->mode) |
1624 | return 0; | 1624 | return 0; |
1625 | if (a->policy != MPOL_DEFAULT && !mpol_match_intent(a, b)) | 1625 | if (a->mode != MPOL_DEFAULT && !mpol_match_intent(a, b)) |
1626 | return 0; | 1626 | return 0; |
1627 | switch (a->policy) { | 1627 | switch (a->mode) { |
1628 | case MPOL_DEFAULT: | 1628 | case MPOL_DEFAULT: |
1629 | return 1; | 1629 | return 1; |
1630 | case MPOL_BIND: | 1630 | case MPOL_BIND: |
@@ -1644,7 +1644,7 @@ void __mpol_put(struct mempolicy *p) | |||
1644 | { | 1644 | { |
1645 | if (!atomic_dec_and_test(&p->refcnt)) | 1645 | if (!atomic_dec_and_test(&p->refcnt)) |
1646 | return; | 1646 | return; |
1647 | p->policy = MPOL_DEFAULT; | 1647 | p->mode = MPOL_DEFAULT; |
1648 | kmem_cache_free(policy_cache, p); | 1648 | kmem_cache_free(policy_cache, p); |
1649 | } | 1649 | } |
1650 | 1650 | ||
@@ -1710,7 +1710,7 @@ static void sp_insert(struct shared_policy *sp, struct sp_node *new) | |||
1710 | rb_link_node(&new->nd, parent, p); | 1710 | rb_link_node(&new->nd, parent, p); |
1711 | rb_insert_color(&new->nd, &sp->root); | 1711 | rb_insert_color(&new->nd, &sp->root); |
1712 | pr_debug("inserting %lx-%lx: %d\n", new->start, new->end, | 1712 | pr_debug("inserting %lx-%lx: %d\n", new->start, new->end, |
1713 | new->policy ? new->policy->policy : 0); | 1713 | new->policy ? new->policy->mode : 0); |
1714 | } | 1714 | } |
1715 | 1715 | ||
1716 | /* Find shared policy intersecting idx */ | 1716 | /* Find shared policy intersecting idx */ |
@@ -1835,7 +1835,7 @@ int mpol_set_shared_policy(struct shared_policy *info, | |||
1835 | 1835 | ||
1836 | pr_debug("set_shared_policy %lx sz %lu %d %d %lx\n", | 1836 | pr_debug("set_shared_policy %lx sz %lu %d %d %lx\n", |
1837 | vma->vm_pgoff, | 1837 | vma->vm_pgoff, |
1838 | sz, npol ? npol->policy : -1, | 1838 | sz, npol ? npol->mode : -1, |
1839 | npol ? npol->flags : -1, | 1839 | npol ? npol->flags : -1, |
1840 | npol ? nodes_addr(npol->v.nodes)[0] : -1); | 1840 | npol ? nodes_addr(npol->v.nodes)[0] : -1); |
1841 | 1841 | ||
@@ -1935,7 +1935,7 @@ static inline int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol) | |||
1935 | char *p = buffer; | 1935 | char *p = buffer; |
1936 | int l; | 1936 | int l; |
1937 | nodemask_t nodes; | 1937 | nodemask_t nodes; |
1938 | unsigned short mode = pol ? pol->policy : MPOL_DEFAULT; | 1938 | unsigned short mode = pol ? pol->mode : MPOL_DEFAULT; |
1939 | unsigned short flags = pol ? pol->flags : 0; | 1939 | unsigned short flags = pol ? pol->flags : 0; |
1940 | 1940 | ||
1941 | switch (mode) { | 1941 | switch (mode) { |