MPATH\_PERSISTENT\_RESERVE\_OUT(3) Library Functions Manual MPATH\_PERSISTENT\_RESERVE\_OUT(3)

# [NAME](#NAME)

mpath\_persistent\_reserve\_out - send PROUT command to DM device

# [SYNOPSIS](#SYNOPSIS)

**#include &lt;mpath\_persist.h&gt;**

**int mpath\_persistent\_reserve\_out(int fd, int rq\_servact, int rq\_scope, unsigned int rq\_type, struct prout\_param\_descriptor \*paramp, int noisy, int verbose)**

# [DESCRIPTION](#DESCRIPTION)

The function in the **mpath\_persistent\_reserve\_out ()** sends PROUT command to the DM device and gets the response.

[**Parameters:**](#Parameters:)

[*fd*](#fd)

The file descriptor of a multipath device. Input argument.

[*rq\_servact*](#rq_servact)

PROUT command service action. Input argument.

[*rq\_scope*](#rq_scope)

Persistent reservation scope. The value should be always LU\_SCOPE (0h).

[*rq\_type*](#rq_type)

Persistent reservation type. The valid values of persistent reservation types are:

5h (Write exclusive - registrants only).

6h (Exclusive access - registrants only).

7h (Write exclusive - All registrants).

8h (Exclusive access - All registrants).

[*paramp*](#paramp)

PROUT command parameter data. The paramp is a struct which describes PROUT parameter list. Caller should manage the memory allocation of this structure.

[*noisy*](#noisy)

Turn on debugging trace: Input argument. 0-&gt;Disable, 1-&gt;Enable.

[*verbose*](#verbose)

Set verbosity level. Input argument. value: 0 to 3. 0-&gt;Errors, 1-&gt;Warnings, 2-&gt;Info, 3-&gt;Debug.

# [RETURNS](#RETURNS)

[**MPATH\_PR\_SUCCESS**](#MPATH_PR_SUCCESS)

If PR command successful else returns any one of the status mentioned below.

[**MPATH\_PR\_SYNTAX\_ERROR**](#MPATH_PR_SYNTAX_ERROR)

If syntax error or invalid parameter.

[**MPATH\_PR\_SENSE\_NOT\_READY**](#MPATH_PR_SENSE_NOT_READY)

If command fails with \[sk,asc,ascq: 0x2,\*,\*].

[**MPATH\_PR\_SENSE\_MEDIUM\_ERROR**](#MPATH_PR_SENSE_MEDIUM_ERROR)

If command fails with \[sk,asc,ascq: 0x3,\*,\*].

[**MPATH\_PR\_SENSE\_HARDWARE\_ERROR**](#MPATH_PR_SENSE_HARDWARE_ERROR)

If command fails with \[sk,asc,ascq: 0x4,\*,\*].

[**MPATH\_PR\_SENSE\_INVALID\_OP**](#MPATH_PR_SENSE_INVALID_OP)

If command fails with \[sk,asc,ascq: 0x5,0x20,0x0].

[**MPATH\_PR\_ILLEGAL\_REQ**](#MPATH_PR_ILLEGAL_REQ)

If command fails with \[sk,asc,ascq: 0x5,\*,\*].

[**MPATH\_PR\_SENSE\_UNIT\_ATTENTION**](#MPATH_PR_SENSE_UNIT_ATTENTION)

If command fails with \[sk,asc,ascq: 0x6,\*,\*].

[**MPATH\_PR\_SENSE\_ABORTED\_COMMAND**](#MPATH_PR_SENSE_ABORTED_COMMAND)

If command fails with \[sk,asc,ascq: 0xb,\*,\*].

[**MPATH\_PR\_NO\_SENSE**](#MPATH_PR_NO_SENSE)

If command fails with \[sk,asc,ascq: 0x0,\*,\*].

[**MPATH\_PR\_SENSE\_MALFORMED**](#MPATH_PR_SENSE_MALFORMED)

If command fails with SCSI command malformed.

[**MPATH\_PR\_FILE\_ERROR**](#MPATH_PR_FILE_ERROR)

If command fails while accessing file (device node) problems(e.g. not found).

[**MPATH\_PR\_DMMP\_ERROR**](#MPATH_PR_DMMP_ERROR)

If Device Mapper related error.(e.g Error in getting dm info).

[**MPATH\_PR\_OTHER**](#MPATH_PR_OTHER)

If other error/warning has occurred(e.g transport or driver error).

[**MPATH\_PR\_RESERV\_CONFLICT**](#MPATH_PR_RESERV_CONFLICT)

If command fails with reservation conflict.

# [SEE ALSO](#SEE_ALSO)

[**mpathpersist**(8)](/man/os/multipath-tools/mpathpersist.8).

# [AUTHORS](#AUTHORS)

*multipath-tools* was developed by Christophe Varoqui &lt;christophe.varoqui@opensvc.com&gt; and others.

2026-02-02 Linux

---

Document: mpath_persistent_reserve_out(3) from multipath-tools 0.15.1-r0 (Chainguard OS)
Source: https://github.com/opensvc/multipath-tools
