| .. | .. | 
|---|
| 15 | 15 | support. | 
|---|
| 16 | 16 |  | 
|---|
| 17 | 17 | Memory policies should not be confused with cpusets | 
|---|
| 18 |  | -(``Documentation/cgroup-v1/cpusets.txt``) | 
|---|
|  | 18 | +(``Documentation/admin-guide/cgroup-v1/cpusets.rst``) | 
|---|
| 19 | 19 | which is an administrative mechanism for restricting the nodes from which | 
|---|
| 20 | 20 | memory may be allocated by a set of processes. Memory policies are a | 
|---|
| 21 | 21 | programming interface that a NUMA-aware application can take advantage of.  When | 
|---|
| .. | .. | 
|---|
| 364 | 364 |  | 
|---|
| 365 | 365 | 2) for querying the policy, we do not need to take an extra reference on the | 
|---|
| 366 | 366 | target task's task policy nor vma policies because we always acquire the | 
|---|
| 367 |  | -   task's mm's mmap_sem for read during the query.  The set_mempolicy() and | 
|---|
| 368 |  | -   mbind() APIs [see below] always acquire the mmap_sem for write when | 
|---|
|  | 367 | +   task's mm's mmap_lock for read during the query.  The set_mempolicy() and | 
|---|
|  | 368 | +   mbind() APIs [see below] always acquire the mmap_lock for write when | 
|---|
| 369 | 369 | installing or replacing task or vma policies.  Thus, there is no possibility | 
|---|
| 370 | 370 | of a task or thread freeing a policy while another task or thread is | 
|---|
| 371 | 371 | querying it. | 
|---|
| 372 | 372 |  | 
|---|
| 373 | 373 | 3) Page allocation usage of task or vma policy occurs in the fault path where | 
|---|
| 374 |  | -   we hold them mmap_sem for read.  Again, because replacing the task or vma | 
|---|
| 375 |  | -   policy requires that the mmap_sem be held for write, the policy can't be | 
|---|
|  | 374 | +   we hold them mmap_lock for read.  Again, because replacing the task or vma | 
|---|
|  | 375 | +   policy requires that the mmap_lock be held for write, the policy can't be | 
|---|
| 376 | 376 | freed out from under us while we're using it for page allocation. | 
|---|
| 377 | 377 |  | 
|---|
| 378 | 378 | 4) Shared policies require special consideration.  One task can replace a | 
|---|
| 379 |  | -   shared memory policy while another task, with a distinct mmap_sem, is | 
|---|
|  | 379 | +   shared memory policy while another task, with a distinct mmap_lock, is | 
|---|
| 380 | 380 | querying or allocating a page based on the policy.  To resolve this | 
|---|
| 381 | 381 | potential race, the shared policy infrastructure adds an extra reference | 
|---|
| 382 | 382 | to the shared policy during lookup while holding a spin lock on the shared | 
|---|