Man Linux: Main Page and Category List

NAME

       dpns_listreplica - list replica entries for a given file

SYNOPSIS

       #include <sys/types.h>
       #include "dpns_api.h"

       struct dpns_filereplica *dpns_listreplica (const char *path, const char
       *guid, int flags, dpns_list *listp)

DESCRIPTION

       dpns_listreplica lists replica entries for a given file.  This  routine
       returns  a pointer to a structure containing the current replica entry.

       struct dpns_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];
       };

       path   specifies the logical pathname.

       guid   specifies the Grid Unique IDentifier.

       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 replicas fo a given sfn could look like:

            int flags;
            dpns_list list;
            struct dpns_filereplica *lp;

            flags = CNS_LIST_BEGIN;
            while ((lp = dpns_listreplica (sfn, NULL, flags, &list)) != NULL) {
                 flags = CNS_LIST_CONTINUE;
                 /* process the entry */
                 .....
            }
            (void) dpns_listreplica (sfn, NULL, CNS_LIST_END, &list);

ERRORS

       ENOENT       The named file does not exist.

       EACCES       Search permission is denied on a component of  the  parent
                    directory.

       ENOMEM       Memory could not be allocated for the output buffer.

       EFAULT       path  and  guid  are  NULL  pointers  or  listp  is a NULL
                    pointer.

       ENOTDIR      A component of path prefix is not a directory.

       EINVAL       The length of guid exceeds CA_MAXGUIDLEN.

       ENAMETOOLONG The length of path exceeds CA_MAXPATHNAMELEN.

       SENOSHOST    Host unknown.

       SENOSSERV    Service unknown.

       SECOMERR     Communication error.

       ENSNACT      Name server is not running or is being shutdown.

SEE ALSO

       Castor_limits(4), dpns_addreplica(3)