Changeset View
Changeset View
Standalone View
Standalone View
head/sys/kern/vfs_syscalls.c
Show First 20 Lines • Show All 1,118 Lines • ▼ Show 20 Lines | kern_openat(struct thread *td, int fd, const char *path, enum uio_seg pathseg, | ||||
*/ | */ | ||||
fp->f_vnode = vp; | fp->f_vnode = vp; | ||||
/* | /* | ||||
* If the file wasn't claimed by devfs bind it to the normal | * If the file wasn't claimed by devfs bind it to the normal | ||||
* vnode operations here. | * vnode operations here. | ||||
*/ | */ | ||||
if (fp->f_ops == &badfileops) { | if (fp->f_ops == &badfileops) { | ||||
KASSERT(vp->v_type != VFIFO, ("Unexpected fifo.")); | KASSERT(vp->v_type != VFIFO, ("Unexpected fifo.")); | ||||
fp->f_seqcount = 1; | fp->f_seqcount[UIO_READ] = 1; | ||||
fp->f_seqcount[UIO_WRITE] = 1; | |||||
finit(fp, (flags & FMASK) | (fp->f_flag & FHASLOCK), | finit(fp, (flags & FMASK) | (fp->f_flag & FHASLOCK), | ||||
DTYPE_VNODE, vp, &vnops); | DTYPE_VNODE, vp, &vnops); | ||||
} | } | ||||
VOP_UNLOCK(vp); | VOP_UNLOCK(vp); | ||||
if (flags & O_TRUNC) { | if (flags & O_TRUNC) { | ||||
error = fo_truncate(fp, 0, td->td_ucred, td); | error = fo_truncate(fp, 0, td->td_ucred, td); | ||||
if (error != 0) | if (error != 0) | ||||
▲ Show 20 Lines • Show All 3,301 Lines • ▼ Show 20 Lines | if (error != 0) { | ||||
vput(vp); | vput(vp); | ||||
goto bad; | goto bad; | ||||
} | } | ||||
#ifdef INVARIANTS | #ifdef INVARIANTS | ||||
td->td_dupfd = 0; | td->td_dupfd = 0; | ||||
#endif | #endif | ||||
fp->f_vnode = vp; | fp->f_vnode = vp; | ||||
fp->f_seqcount = 1; | fp->f_seqcount[UIO_READ] = 1; | ||||
fp->f_seqcount[UIO_WRITE] = 1; | |||||
finit(fp, (fmode & FMASK) | (fp->f_flag & FHASLOCK), DTYPE_VNODE, vp, | finit(fp, (fmode & FMASK) | (fp->f_flag & FHASLOCK), DTYPE_VNODE, vp, | ||||
&vnops); | &vnops); | ||||
VOP_UNLOCK(vp); | VOP_UNLOCK(vp); | ||||
if ((fmode & O_TRUNC) != 0) { | if ((fmode & O_TRUNC) != 0) { | ||||
error = fo_truncate(fp, 0, td->td_ucred, td); | error = fo_truncate(fp, 0, td->td_ucred, td); | ||||
if (error != 0) | if (error != 0) | ||||
goto bad; | goto bad; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 396 Lines • Show Last 20 Lines |