Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/vfs_subr.c
Show First 20 Lines • Show All 139 Lines • ▼ Show 20 Lines | |||||
static counter_u64_t vnodes_created; | static counter_u64_t vnodes_created; | ||||
SYSCTL_COUNTER_U64(_vfs, OID_AUTO, vnodes_created, CTLFLAG_RD, &vnodes_created, | SYSCTL_COUNTER_U64(_vfs, OID_AUTO, vnodes_created, CTLFLAG_RD, &vnodes_created, | ||||
"Number of vnodes created by getnewvnode"); | "Number of vnodes created by getnewvnode"); | ||||
/* | /* | ||||
* Conversion tables for conversion from vnode types to inode formats | * Conversion tables for conversion from vnode types to inode formats | ||||
* and back. | * and back. | ||||
*/ | */ | ||||
enum vtype iftovt_tab[16] = { | __enum_uint8(vtype) iftovt_tab[16] = { | ||||
VNON, VFIFO, VCHR, VNON, VDIR, VNON, VBLK, VNON, | VNON, VFIFO, VCHR, VNON, VDIR, VNON, VBLK, VNON, | ||||
VREG, VNON, VLNK, VNON, VSOCK, VNON, VNON, VNON | VREG, VNON, VLNK, VNON, VSOCK, VNON, VNON, VNON | ||||
}; | }; | ||||
int vttoif_tab[10] = { | int vttoif_tab[10] = { | ||||
0, S_IFREG, S_IFDIR, S_IFBLK, S_IFCHR, S_IFLNK, | 0, S_IFREG, S_IFDIR, S_IFBLK, S_IFCHR, S_IFLNK, | ||||
S_IFSOCK, S_IFIFO, S_IFMT, S_IFMT | S_IFSOCK, S_IFIFO, S_IFMT, S_IFMT | ||||
}; | }; | ||||
▲ Show 20 Lines • Show All 5,099 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
/* | /* | ||||
* Common filesystem object access control check routine. Accepts a | * Common filesystem object access control check routine. Accepts a | ||||
* vnode's type, "mode", uid and gid, requested access mode, and credentials. | * vnode's type, "mode", uid and gid, requested access mode, and credentials. | ||||
* Returns 0 on success, or an errno on failure. | * Returns 0 on success, or an errno on failure. | ||||
*/ | */ | ||||
int | int | ||||
vaccess(enum vtype type, mode_t file_mode, uid_t file_uid, gid_t file_gid, | vaccess(__enum_uint8(vtype) type, mode_t file_mode, uid_t file_uid, gid_t file_gid, | ||||
accmode_t accmode, struct ucred *cred) | accmode_t accmode, struct ucred *cred) | ||||
{ | { | ||||
accmode_t dac_granted; | accmode_t dac_granted; | ||||
accmode_t priv_granted; | accmode_t priv_granted; | ||||
KASSERT((accmode & ~(VEXEC | VWRITE | VREAD | VADMIN | VAPPEND)) == 0, | KASSERT((accmode & ~(VEXEC | VWRITE | VREAD | VADMIN | VAPPEND)) == 0, | ||||
("invalid bit in accmode")); | ("invalid bit in accmode")); | ||||
KASSERT((accmode & VAPPEND) == 0 || (accmode & VWRITE), | KASSERT((accmode & VAPPEND) == 0 || (accmode & VWRITE), | ||||
▲ Show 20 Lines • Show All 1,808 Lines • ▼ Show 20 Lines | vn_getsize(struct vnode *vp, off_t *size, struct ucred *cred) | ||||
VOP_LOCK(vp, LK_SHARED); | VOP_LOCK(vp, LK_SHARED); | ||||
error = vn_getsize_locked(vp, size, cred); | error = vn_getsize_locked(vp, size, cred); | ||||
VOP_UNLOCK(vp); | VOP_UNLOCK(vp); | ||||
return (error); | return (error); | ||||
} | } | ||||
#ifdef INVARIANTS | #ifdef INVARIANTS | ||||
void | void | ||||
vn_set_state_validate(struct vnode *vp, enum vstate state) | vn_set_state_validate(struct vnode *vp, __enum_uint8(vstate) state) | ||||
{ | { | ||||
switch (vp->v_state) { | switch (vp->v_state) { | ||||
case VSTATE_UNINITIALIZED: | case VSTATE_UNINITIALIZED: | ||||
switch (state) { | switch (state) { | ||||
case VSTATE_CONSTRUCTED: | case VSTATE_CONSTRUCTED: | ||||
case VSTATE_DESTROYING: | case VSTATE_DESTROYING: | ||||
return; | return; | ||||
Show All 36 Lines |