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

# lfc\_listreplicax(3)

list replica entries for a given pool/server/filesystem

## NAME

lfc\_listreplicax - list replica entries for a given pool/server/filesystem

## SYNOPSIS

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

**struct lfc\_filereplica \*lfc\_listreplicax (const char \****poolname***,** **const char \****server***,** **const char \****fs***,** **int** *flags***,** **lfc\_list \****listp***)**

## DESCRIPTION

**lfc\_listreplicax** lists replica entries for a given pool/server/filesystem. This routine returns a pointer to a structure containing the current replica entry.

```
struct lfc_filereplica {
	u_signed64	fileid;
	u_signed64	nbaccesses;
	time_t		atime;		/* last access to replica */
	time_t		ptime;		/* replica pin time */
	char		status;
	char		f_type;		/* 'V' for Volatile, 'P' for Permanent */
	char		poolname[CA_MAXPOOLNAMELEN+1];
	char		host[CA_MAXHOSTNAMELEN+1];
	char		fs[80];
	char		sfn[CA_MAXSFNLEN+1];
};
```

- *poolname*

  specifies the disk pool (only meaningful for the DPM).

- *server*

  specifies the Storage Element or disk server hostname.

- *fs*

  specifies the file system (only meaningful for the DPM).

- *flags*

  may be one of the following constant:

  - **CNS\_LIST\_BEGIN**

    the first call must have this flag set to allocate buffers and initialize pointers.

  - **CNS\_LIST\_CONTINUE**

    all the following calls must have this flag set.

  - **CNS\_LIST\_END**

    final call to terminate the list and free resources.

## RETURN VALUE

This routine returns a pointer to a structure containing the current replica entry if the operation was successful or NULL if all entries have been returned or if the operation failed. In the latter case, **serrno** is set appropriately.

## EXAMPLES

A C program listing the files residing on a given server could look like:

```
	int flags;
	lfc_list list;
	struct lfc_filereplica *lp;
	flags = CNS_LIST_BEGIN;
	while ((lp = lfc_listreplicax (NULL, server, NULL, flags, &list))) {
		flags = CNS_LIST_CONTINUE;
		/* process the entry */
		.....
	}
	(void) lfc_listreplicax (NULL, server, NULL, CNS_LIST_END, &list);
```

## ERRORS

- **ENOMEM**

  Memory could not be allocated for the output buffer.

- **EFAULT**

  *poolname*, *server* and *fs* are NULL pointers or *listp* is a NULL pointer.

- **EINVAL**

  The length of *poolname* exceeds **CA\_MAXPOOLNAMELEN** or the length of *server* exceeds **CA\_MAXHOSTNAMELEN** or the length of *fs* exceeds 79.

- **SENOSHOST**

  Host unknown.

- **SENOSSERV**

  Service unknown.

- **SECOMERR**

  Communication error.

- **ENSNACT**

  Name server is not running or is being shutdown.

## SEE ALSO

**[Castor\_limits(4)](/Castor_limits/4.md)**, **[lfc\_addreplica(3)](/lfc_addreplica/3.md)**
