gpfs_stat_inode_with_xattrs() subroutine

Seeks the specified inode and retrieves that inode and its extended attributes from the inode scan.

Library

GPFS Library (libgpfs.a for AIX®, libgpfs.so for Linux®)

Synopsis

#include <gpfs.h>
int gpfs_stat_inode_with_xattrs(gpfs_iscan_t *iscan,
                                gpfs_ino_t ino,
                                gpfs_ino_t termIno,
                                const gpfs_iattr_t **iattr,
                                const char **xattrBuf,
                                unsigned int *xattrBufLen); 

Description

The gpfs_stat_inode_with_xattrs() subroutine is used to seek the specified inode and to retrieve that inode and its extended attributes from the inode scan. This subroutine combines gpfs_seek_inode() and get_next_inode(), but will only return the specified inode.

The data returned by gpfs_next_inode() is overwritten by subsequent calls to gpfs_next_inode(), gpfs_seek_inode(), or gpfs_stat_inode_with_xattrs().

The termIno parameter provides a way to partition an inode scan such that it can be run on more than one node. It is only used by this call to control prefetching.

The returned values for xattrBuf and xattrBufLen must be provided to gpfs_next_xattr() to obtain the extended attribute names and values. The buffer used for the extended attributes is overwritten by subsequent calls to gpfs_next_inode(), gpfs_seek_inode(), or gpfs_stat_inode_with_xattrs().

Note: Compile any program that uses this subroutine with the -lgpfs flag from the following library:
  • libgpfs.a for AIX
  • libgpfs.so for Linux

Parameters

iscan
A pointer to an inode scan descriptor.
ino
The inode number to be returned.
termIno
Prefetches inodes up to this inode. The caller might specify maxIno from gpfs_open_inodescan() or 0 to allow prefetching over the entire inode file.
iattr
A pointer to the returned pointer to the file's iattr.
xattrBuf
A pointer to the returned pointer to the xattr buffer.
xattrBufLen
The returned length of the xattr buffer.

Exit status

If the gpfs_stat_inode_with_xattrs() subroutine is successful, it returns a value of 0 and the iattr parameter is set to point to gpfs_iattr_t. If the gpfs_stat_inode_with_xattrs() subroutine is successful, but there are no more inodes before the termIno parameter, or if the requested inode does not exist, it returns a value of 0 and the iattr parameter is set to NULL.

If the gpfs_stat_inode_with_xattrs() subroutine is unsuccessful, it returns a value of -1 and sets the global error variable errno to indicate the nature of the error.

Exceptions

None.

Error status

Error codes include but are not limited to the following:

EPERM
The caller must have superuser privilege.
ENOSYS
The gpfs_stat_inode_with_xattrs() subroutine is not supported under the current file system format.
ESTALE
The cached file system information was not valid.
ENOMEM
The buffer is too small.
GPFS_E_INVAL_ISCAN
Incorrect parameters.
GPFS_E_HOLE_IN_IFILE
The inode scan is reading only the inodes that have been copied to a snapshot and this inode has not yet been copied.

Location

/usr/lpp/mmfs/lib/libgpfs.a for AIX

/usr/lpp/mmfs/lib/libgpfs.so for Linux