| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef MIGRATE_MODE_H_INCLUDED |
| #define MIGRATE_MODE_H_INCLUDED |
| /* |
| * MIGRATE_ASYNC means never block |
| * MIGRATE_SYNC_LIGHT in the current implementation means to allow blocking |
| * on most operations but not ->writepage as the potential stall time |
| * is too significant |
| * MIGRATE_SYNC will block when migrating pages |
| * MIGRATE_SYNC_NO_COPY will block when migrating pages but will not copy pages |
| * with the CPU. Instead, page copy happens outside the migratepage() |
| * callback and is likely using a DMA engine. See migrate_vma() and HMM |
| * (mm/hmm.c) for users of this mode. |
| */ |
| enum migrate_mode { |
| MIGRATE_ASYNC, |
| MIGRATE_SYNC_LIGHT, |
| MIGRATE_SYNC, |
| MIGRATE_SYNC_NO_COPY, |
| }; |
| |
| enum migrate_reason { |
| MR_COMPACTION, |
| MR_MEMORY_FAILURE, |
| MR_MEMORY_HOTPLUG, |
| MR_SYSCALL, /* also applies to cpusets */ |
| MR_MEMPOLICY_MBIND, |
| MR_NUMA_MISPLACED, |
| MR_CONTIG_RANGE, |
| MR_LONGTERM_PIN, |
| MR_DEMOTION, |
| MR_TYPES |
| }; |
| |
| #endif /* MIGRATE_MODE_H_INCLUDED */ |