Reference

VOP_ATTRIB(9)

get and set attributes on a file or directory

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.

History