swapoff(2) - Linux man page
Name
swapon, swapoff - start/stop swapping to file/deviceSynopsis
#include <asm/page.h> /* to find PAGE_SIZE */
#include <sys/swap.h>
int swapon(const char *path, int swapflags);
int swapoff(const char *path);
Description
swapon() sets the swap area to the file or block device specified by path. swapoff() stops swapping to the file or block device specified by path.swapon() takes a swapflags argument. If swapflags has the SWAP_FLAG_PREFER bit turned on, the new swap area will have a higher priority than default. The priority is encoded within swapflags as:
(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK
These functions may only be used by a privileged process (one having the CAP_SYS_ADMIN capability).
Priority
Each swap area has a priority, either high or low. The default priority is low. Within the low-priority areas, newer areas are even lower priority than older areas.All priorities set with swapflags are high-priority, higher than default. They may have any non-negative value chosen by the caller. Higher numbers mean higher priority.
Swap pages are allocated from areas in priority order, highest priority first. For areas with different priorities, a higher-priority area is exhausted before using a lower-priority area. If two or more areas have the same priority, and it is the highest priority available, pages are allocated on a round-robin basis between them.
As of Linux 1.3.6, the kernel usually follows these rules, but there are exceptions.
Return Value
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.Errors
- EBUSY
- (for swapon()) The specified path is already being used as a swap area.
- EINVAL
- The file path exists, but refers neither to a regular file nor to a block device; or, for swapon(), the indicated path does not contain a valid swap signature; or, for swapoff(), path is not currently a swap area.
- ENFILE
- The system limit on the total number of open files has been reached.
- ENOENT
- The file path does not exist.
- ENOMEM
- The system has insufficient memory to start swapping.
- EPERM
- The caller does not have the CAP_SYS_ADMIN capability or the maximal number of swap files has been reached. (The maximum is MAX_SWAPFILES-2(30) if CONFIG_MIGRATION is enabled, MAX_SWAPFILES (32) otherwise. In Linux kernel versions prior to 2.4.10, the maximum was always MAX_SWAPFILES, which was 8.
