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, 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, struct ucred
*active_cred, struct
ucred *file_cred, struct
thread *td);
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.
- td
- The calling thread.
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
AUTHORS
This manual page was written by Doug Rabson.