VOP_SETATTR(9)

VOP_SETATTR9

Get and set attributes on a file or directory

Part of VOP_ATTRIB(9).

Usage

#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);

Overview

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.

Releases

83 releases since FreeBSD 2.2.2-RELEASE; the text changed 44 times.

  1. 2.2.2–2.2.8
  2. 2.2.9
  3. 3.0–3.2
  4. 3.3–3.4
  5. 3.5–3.5.1
  6. 4.0
  7. 4.1–4.4
  8. 4.5–4.11
  9. 5.0
  10. 5.1–5.5
  11. 6.0–6.3
  12. 6.4
  13. 7.0
  14. 7.1
  15. 7.2
  16. 7.3
  17. 7.4
  18. 8.0
  19. 8.1
  20. 8.2
  21. 8.3
  22. 8.4
  23. 9.0
  24. 9.1
  25. 9.2
  26. 9.3
  27. 10.0
  28. 10.1
  29. 10.2
  30. 10.3
  31. 10.4
  32. 11.0
  33. 11.1
  34. 11.2
  35. 11.3
  36. 11.4
  37. 12.0
  38. 12.1
  39. 12.2
  40. 12.3
  41. 12.4
  42. 13.0–13.2
  43. 13.3–13.5
  44. 14.0–14.1
  45. 14.2–16.0

Authors

This manual page was written by Doug Rabson.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.