VOP_ATTRIB(9)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1

🌸 NAME β€” VOP_ATTRIB(9) 🌸

okay so bestie, this is VOP_ATTRIB(9) from the Kernel Developer's Manual: the page for VOP_GETATTR, VOP_SETATTR β€” get and set attributes on a file or directory. ✨

✨ SYNOPSIS ✨

the way this synopsis is giving exact-prototype energy:

       #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 πŸ’…

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

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. iykyk.

πŸ”’ LOCKS πŸ”’

lock vibe check, no cap:

  • 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 πŸ‘€

🫢 AUTHORS 🫢

This manual page was written by Doug Rabson. πŸ‘‘

πŸ’Œ footer vibe: source/version + date, bestie β€” Debian, October 2, 2021. bye! 🫢
πŸ“¦ where this page comes from