VOP_GETATTR,
    VOP_SETATTR — get and set
    attributes on a file or directory
#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);
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.
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.
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.
  - [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.
This manual page was written by Doug
    Rabson.