1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef MIGRATE_MODE_H_INCLUDED |
3 | #define MIGRATE_MODE_H_INCLUDED |
4 | /* |
5 | * MIGRATE_ASYNC means never block |
6 | * MIGRATE_SYNC_LIGHT in the current implementation means to allow blocking |
7 | * on most operations but not ->writepage as the potential stall time |
8 | * is too significant |
9 | * MIGRATE_SYNC will block when migrating pages |
10 | * MIGRATE_SYNC_NO_COPY will block when migrating pages but will not copy pages |
11 | * with the CPU. Instead, page copy happens outside the migratepage() |
12 | * callback and is likely using a DMA engine. See migrate_vma() and HMM |
13 | * (mm/hmm.c) for users of this mode. |
14 | */ |
15 | enum migrate_mode { |
16 | MIGRATE_ASYNC, |
17 | MIGRATE_SYNC_LIGHT, |
18 | MIGRATE_SYNC, |
19 | MIGRATE_SYNC_NO_COPY, |
20 | }; |
21 | |
22 | enum migrate_reason { |
23 | MR_COMPACTION, |
24 | MR_MEMORY_FAILURE, |
25 | MR_MEMORY_HOTPLUG, |
26 | MR_SYSCALL, /* also applies to cpusets */ |
27 | MR_MEMPOLICY_MBIND, |
28 | MR_NUMA_MISPLACED, |
29 | MR_CONTIG_RANGE, |
30 | MR_LONGTERM_PIN, |
31 | MR_DEMOTION, |
32 | MR_TYPES |
33 | }; |
34 | |
35 | #endif /* MIGRATE_MODE_H_INCLUDED */ |
36 | |