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.