| /* 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 */ |