---
name: "PR_SET_IO_FLUSHER"
section: "2const"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/PR_SET_IO_FLUSHER"
---

# PR\_SET\_IO\_FLUSHER(2const)

change the IO\_FLUSHER state

## NAME

PR\_SET\_IO\_FLUSHER - change the IO\_FLUSHER state

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <linux/prctl.h>  /* Definition of PR_* constants */
#include <sys/prctl.h>
```

**int prctl(PR\_SET\_IO\_FLUSHER, long** *state***, 0L, 0L, 0L);**

## DESCRIPTION

If a user process is involved in the block layer or filesystem I/O path, and can allocate memory while processing I/O requests it must set *state* to 1. This will put the process in the IO\_FLUSHER state, which allows it special treatment to make progress when allocating memory. If *state* is 0, the process will clear the IO\_FLUSHER state, and the default behavior will be used.

The calling process must have the **CAP\_SYS\_RESOURCE** capability.

The IO\_FLUSHER state is inherited by a child process created via [**fork**(2)](/fork/2.md) and is preserved across [**execve**(2)](/execve/2.md).

Examples of IO\_FLUSHER applications are FUSE daemons, SCSI device emulation daemons, and daemons that perform error handling like multipath path recovery applications.

## RETURN VALUE

On success, 0 is returned. On error, -1 is returned, and *errno* is set to indicate the error.

## ERRORS

- **EINVAL**

  *state* is not a valid value.

## STANDARDS

Linux.

## HISTORY

Linux 5.6.

## SEE ALSO

[**prctl**(2)](/prctl/2.md), [**PR\_GET\_IO\_FLUSHER**(2const)](/PR_GET_IO_FLUSHER/2const.md)
