VOP_ATTRIB(9)          FreeBSD Kernel Developer's Manual         VOP_ATTRIB(9)

NAME

     VOP_GETATTR, VOP_SETATTR - get and set attributes on a file or directory

SYNOPSIS

     #include <sys/param.h>
     #include <sys/vnode.h>

     int
     VOP_GETATTR(struct, vnode, *vp, flags, struct, vattr, *vap, struct,
         ucred, *cred);

     int
     VOP_SETATTR(struct, vnode, *vp, struct, vattr, *vap, struct, ucred,
         *cred);

     int
     VOP_STAT(struct, vnode, *vp, struct, stat, *sb, flags, struct, ucred,
         *active_cred, struct, ucred, *file_cred);

DESCRIPTION

     These entry points manipulate various attributes of a file or directory,
     including file permissions, owner, group, size, access time and
     modification time.

     VOP_STAT() returns data in a format suitable for the stat(2) system call
     and by default is implemented as a wrapper around VOP_GETATTR().
     Filesystems may want to implement their own variant for performance
     reasons.

     For VOP_GETATTR() and VOP_SETATTR() the arguments are:

     vp    The vnode of the file.

     vap   The attributes of the file.

     cred  The user credentials of the calling thread.

     For VOP_STAT() the arguments are:

     vp           The vnode of the file.

     sb           The attributes of the file.

     active_cred  The user credentials of the calling thread.

     file_cred    The credentials installed on the file description pointing
                  to the vnode or NOCRED.

     Attributes which are not being modified by VOP_SETATTR() should be set to
     the value VNOVAL; VATTR_NULL() may be used to clear all the values, and
     should generally be used to reset the contents of *vap prior to setting
     specific values.

LOCKS

     Both VOP_GETATTR() and VOP_STAT() expect the vnode to be locked on entry
     and will leave the vnode locked on return.  The lock type can be either
     shared or exclusive.

     VOP_SETATTR() expects the vnode to be locked on entry and will leave the
     vnode locked on return.  The lock type must be exclusive.

RETURN VALUES

     VOP_GETATTR() returns 0 if it was able to retrieve the attribute data via
     *vap, otherwise an appropriate error is returned.  VOP_SETATTR() returns
     zero if the attributes were changed successfully, otherwise an
     appropriate error is returned.  VOP_STAT() returns 0 if it was able to
     retrieve the attribute data *sb, otherwise an appropriate error is
     returned.

ERRORS

     [EPERM]            The file is immutable.

     [EACCES]           The caller does not have permission to modify the file
                        or directory attributes.

     [EROFS]            The file system is read-only.

SEE ALSO

     VFS(9), vnode(9), VOP_ACCESS(9)

AUTHORS

     This manual page was written by Doug Rabson.

FreeBSD 15.1-STABLE-HBSD        October 2, 2021                  VOP_ATTRIB(9)