---
name: "dpm_reservespace"
section: "3"
platform: "linux"
package: "libdpm-dev"
version: "1.10.0-2+b3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/dpm_reservespace"
---

# dpm\_reservespace(3)

reserve space

## NAME

dpm\_reservespace - reserve space

## SYNOPSIS

**#include \<sys/types.h\>**\
 **#include "dpm\_api.h"**

**int dpm\_reservespace (const char** *s\_type***,** **const char \****u\_token***,** **const char** *ret\_policy***,** **const char** *ac\_latency***,** **u\_signed64** *req\_t\_space***,** **u\_signed64** *req\_g\_space***,** **time\_t** *req\_lifetime***,** **int** *nbgids***,** **gid\_t \****req\_gids***,** **const char \****poolname,* **char \****actual\_s\_type***,** **u\_signed64 \****actual\_t\_space***,** **u\_signed64 \****actual\_g\_space***,** **time\_t \****actual\_lifetime***,** **char \****s\_token***)**

## DESCRIPTION

**dpm\_reservespace** reserves space.

The input arguments are:

- *s\_type*

  specifies the type of space requested. It can be **V** (for Volatile), **D** (for Durable), **P** (for Permanent) or **-** (for any).

- *u\_token*

  specifies the user provided description associated with the request. This argument may be NULL.

- *ret\_policy*

  specifies the retention policy requested. It can be **R** (for REPLICA), **O** (for OUTPUT) or **C** (for CUSTODIAL).

- *ac\_latency*

  specifies the access latency requested. It can be **O** (for ONLINE) or **N** (for NEARLINE).

- *req\_t\_space*

  Total space requested in bytes.

- *req\_g\_space*

  Guaranteed space requested in bytes.

- *req\_lifetime*

  specifies the requested space lifetime (in seconds) relative to the current time.

- *nbgids*

  is the size of the array of group ids *req\_gids*.

- *req\_gids*

  when zero, the space is reserved for the user if the requester has a proxy without VOMS extension or for the group if the requester has a proxy with VOMS extension. If not zero, the space is reserved for this set of group ids. If the caller does not belong to the group, it must have ADMIN privileges.

- *poolname*

  If not NULL, reserves the space in that disk pool.

The output arguments are:

- *actual\_s\_type*

  Type of reserved space.

- *actual\_t\_space*

  Total space reserved in bytes (best effort).

- *actual\_g\_space*

  Guaranteed space reserved in bytes.

- *actual\_lifetime*

  Lifetime of the reserved space (in seconds) relative to the current time.

- *s\_token*

  Address of a buffer to receive the system allocated token.

## RETURN VALUE

This routine returns 0 if the operation was successful or -1 if the operation failed. In the latter case, **serrno** is set appropriately.

## ERRORS

- **EACCES**

  The caller does not belong to the group identified by *req\_gid* and does not have ADMIN privileges.

- **EFAULT**

  *nbgids* is greater than 0 and *req\_gids* is a NULL pointer.

- **EINVAL**

  The space type is invalid or the length of the user space token description is greater than 255, the space requested is not a positive value, the pool name is longer than **CA\_MAXPOOLNAMELEN** or unknown or the number of gids is too big.

- **SENOSHOST**

  Host unknown.

- **SEINTERNAL**

  Database error.

- **SECOMERR**

  Communication error.
