.\" $OpenBSD: VOP_GETATTR.9,v 1.3 2007/05/31 19:20:00 jmc Exp $ .\" .\" Copyright (c) 2005 Pedro Martelletto <pedro@openbsd.org> .\" All rights reserved. .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .Dd $Mdocdate: May 31 2007 $ .Dt VOP_GETATTR 9 .Os .Sh NAME .Nm VOP_GETATTR , .Nm VOP_SETATTR .Nd get or set vnode attributes .Sh SYNOPSIS .Fd #include <sys/vnode.h> .Ft int .Fo VOP_GETATTR .Fa "struct vnode *vp" .Fa "struct vattr *vap" .Fa "struct ucred *cred" .Fa "struct proc *p" .Fc .Ft int .Fo VOP_SETATTR .Fa "struct vnode *vp" .Fa "struct vattr *vap" .Fa "struct ucred *cred" .Fa "struct proc *p" .Fc .Sh DESCRIPTION The .Nm VOP_GETATTR and .Nm VOP_SETATTR routines implement a generic way of representing, retrieving, and setting many vnode attributes such as size, number of references, access mode, and last modified time. All attributes are held in the .Fa vattr structure described below. .Bd -literal struct vattr { enum vtype va_type; /* vnode type */ mode_t va_mode; /* files access mode and type */ nlink_t va_nlink; /* number of references */ uid_t va_uid; /* owner user id */ gid_t va_gid; /* owner group id */ long va_fsid; /* file system id */ long va_fileid; /* file id */ u_quad_t va_size; /* file size in bytes */ long va_blocksize; /* blocksize preferred for i/o */ struct timespec va_atime; /* time of last access */ struct timespec va_mtime; /* time of last modification */ struct timespec va_ctime; /* time file changed */ u_long va_gen; /* generation number of file */ u_long va_flags; /* flags defined for file */ dev_t va_rdev; /* device the vnode represents */ u_quad_t va_bytes; /* bytes of held disk space */ u_quad_t va_filerev; /* file modification number */ u_int va_vaflags; /* operations flags */ long va_spare; /* remain quad aligned */ }; .Ed .Sh IMPLEMENTATION NOTES Depending on the specific filesystem implementation, some values may not be available for modification and/or retrieval. In these cases, the corresponding fields in the .Fa vattr structure should be set to .Dv VNOVAL . .Pp Upon return from a .Fn VOP_GETATTR call made on a directory, the .Fa va_nlink field should contain the number of entries in the directory, if possible, or 1 otherwise. .Sh RETURN VALUES The .Fn VOP_GETATTR and .Fn VOP_SETATTR functions return 0 to indicate success and a non-zero error code to indicate failure. See .Xr errno 2 for more information. .Sh SEE ALSO .Xr errno 2 , .Xr vfs 9 , .Xr vn_stat 9 , .Xr vnode 9 .Sh AUTHORS This man page was written by .An Pedro Martelletto for .Ox .