SCCS-vsn: sys/kern/vfs_syscalls.c 7.67
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)vfs_syscalls.c 7.66 (Berkeley) %G%
+ * @(#)vfs_syscalls.c 7.67 (Berkeley) %G%
/*
* Mount the filesystem.
*/
/*
* Mount the filesystem.
*/
- error = VFS_MOUNT(mp, uap->dir, uap->data, ndp);
+ error = VFS_MOUNT(mp, uap->dir, uap->data, ndp, p);
if (mp->mnt_flag & MNT_UPDATE) {
mp->mnt_flag &= ~MNT_UPDATE;
vrele(vp);
if (mp->mnt_flag & MNT_UPDATE) {
mp->mnt_flag &= ~MNT_UPDATE;
vrele(vp);
if (!error) {
VOP_UNLOCK(vp);
vfs_unlock(mp);
if (!error) {
VOP_UNLOCK(vp);
vfs_unlock(mp);
- error = VFS_START(mp, 0);
+ error = VFS_START(mp, 0, p);
} else {
vfs_remove(mp);
free((caddr_t)mp, M_MOUNT);
} else {
vfs_remove(mp);
free((caddr_t)mp, M_MOUNT);
}
mp = vp->v_mount;
vput(vp);
}
mp = vp->v_mount;
vput(vp);
- return (dounmount(mp, uap->flags));
+ return (dounmount(mp, uap->flags, p));
register struct mount *mp;
int flags;
register struct mount *mp;
int flags;
{
struct vnode *coveredvp;
int error;
{
struct vnode *coveredvp;
int error;
#endif
cache_purgevfs(mp); /* remove cache entries for this file sys */
if ((error = VFS_SYNC(mp, MNT_WAIT)) == 0 || (flags & MNT_FORCE))
#endif
cache_purgevfs(mp); /* remove cache entries for this file sys */
if ((error = VFS_SYNC(mp, MNT_WAIT)) == 0 || (flags & MNT_FORCE))
- error = VFS_UNMOUNT(mp, flags);
+ error = VFS_UNMOUNT(mp, flags, p);
mp->mnt_flag &= ~MNT_UNMOUNT;
vfs_unbusy(mp);
if (error) {
mp->mnt_flag &= ~MNT_UNMOUNT;
vfs_unbusy(mp);
if (error) {
return (error);
mp = ndp->ni_vp->v_mount;
vrele(ndp->ni_vp);
return (error);
mp = ndp->ni_vp->v_mount;
vrele(ndp->ni_vp);
- return (VFS_QUOTACTL(mp, uap->cmd, uap->uid, uap->arg));
+ return (VFS_QUOTACTL(mp, uap->cmd, uap->uid, uap->arg, p));
mp = ndp->ni_vp->v_mount;
sp = &mp->mnt_stat;
vrele(ndp->ni_vp);
mp = ndp->ni_vp->v_mount;
sp = &mp->mnt_stat;
vrele(ndp->ni_vp);
- if (error = VFS_STATFS(mp, sp))
+ if (error = VFS_STATFS(mp, sp, p))
return (error);
sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
return (copyout((caddr_t)sp, (caddr_t)uap->buf, sizeof(*sp)));
return (error);
sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
return (copyout((caddr_t)sp, (caddr_t)uap->buf, sizeof(*sp)));
return (error);
mp = ((struct vnode *)fp->f_data)->v_mount;
sp = &mp->mnt_stat;
return (error);
mp = ((struct vnode *)fp->f_data)->v_mount;
sp = &mp->mnt_stat;
- if (error = VFS_STATFS(mp, sp))
+ if (error = VFS_STATFS(mp, sp, p))
return (error);
sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
return (copyout((caddr_t)sp, (caddr_t)uap->buf, sizeof(*sp)));
return (error);
sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
return (copyout((caddr_t)sp, (caddr_t)uap->buf, sizeof(*sp)));
*/
if (((uap->flags & MNT_NOWAIT) == 0 ||
(uap->flags & MNT_WAIT)) &&
*/
if (((uap->flags & MNT_NOWAIT) == 0 ||
(uap->flags & MNT_WAIT)) &&
- (error = VFS_STATFS(mp, sp))) {
+ (error = VFS_STATFS(mp, sp, p))) {
mp = mp->mnt_prev;
continue;
}
mp = mp->mnt_prev;
continue;
}
if (vp->v_type != VDIR)
error = ENOTDIR;
else
if (vp->v_type != VDIR)
error = ENOTDIR;
else
- error = VOP_ACCESS(vp, VEXEC, p->p_ucred);
+ error = VOP_ACCESS(vp, VEXEC, p->p_ucred, p);
VOP_UNLOCK(vp);
if (error)
return (error);
VOP_UNLOCK(vp);
if (error)
return (error);
if (vp->v_type != VDIR)
error = ENOTDIR;
else
if (vp->v_type != VDIR)
error = ENOTDIR;
else
- error = VOP_ACCESS(vp, VEXEC, p->p_ucred);
+ error = VOP_ACCESS(vp, VEXEC, p->p_ucred, p);
VOP_UNLOCK(vp);
if (error)
vrele(vp);
VOP_UNLOCK(vp);
if (error)
vrele(vp);
vattr.va_rdev = uap->dev;
out:
if (!error) {
vattr.va_rdev = uap->dev;
out:
if (!error) {
- error = VOP_MKNOD(ndp, &vattr, p->p_ucred);
+ error = VOP_MKNOD(ndp, &vattr, p->p_ucred, p);
} else {
VOP_ABORTOP(ndp);
if (ndp->ni_dvp == vp)
} else {
VOP_ABORTOP(ndp);
if (ndp->ni_dvp == vp)
VATTR_NULL(&vattr);
vattr.va_type = VFIFO;
vattr.va_mode = (uap->fmode & 07777) &~ p->p_fd->fd_cmask;
VATTR_NULL(&vattr);
vattr.va_type = VFIFO;
vattr.va_mode = (uap->fmode & 07777) &~ p->p_fd->fd_cmask;
- return (VOP_MKNOD(ndp, &vattr, p->p_ucred));
+ return (VOP_MKNOD(ndp, &vattr, p->p_ucred, p));
error = EXDEV;
out:
if (!error) {
error = EXDEV;
out:
if (!error) {
- error = VOP_LINK(vp, ndp);
+ error = VOP_LINK(vp, ndp, p);
} else {
VOP_ABORTOP(ndp);
if (ndp->ni_dvp == ndp->ni_vp)
} else {
VOP_ABORTOP(ndp);
if (ndp->ni_dvp == ndp->ni_vp)
}
VATTR_NULL(&vattr);
vattr.va_mode = 0777 &~ p->p_fd->fd_cmask;
}
VATTR_NULL(&vattr);
vattr.va_mode = 0777 &~ p->p_fd->fd_cmask;
- error = VOP_SYMLINK(ndp, &vattr, target);
+ error = VOP_SYMLINK(ndp, &vattr, target, p);
out:
FREE(target, M_NAMEI);
return (error);
out:
FREE(target, M_NAMEI);
return (error);
#endif
out:
if (!error) {
#endif
out:
if (!error) {
- error = VOP_REMOVE(ndp);
+ error = VOP_REMOVE(ndp, p);
} else {
VOP_ABORTOP(ndp);
if (ndp->ni_dvp == vp)
} else {
VOP_ABORTOP(ndp);
if (ndp->ni_dvp == vp)
case L_XTND:
if (error = VOP_GETATTR((struct vnode *)fp->f_data,
case L_XTND:
if (error = VOP_GETATTR((struct vnode *)fp->f_data,
return (error);
fp->f_offset = uap->off + vattr.va_size;
break;
return (error);
fp->f_offset = uap->off + vattr.va_size;
break;
if (uap->fmode & X_OK)
mode |= VEXEC;
if ((mode & VWRITE) == 0 || (error = vn_writechk(vp)) == 0)
if (uap->fmode & X_OK)
mode |= VEXEC;
if ((mode & VWRITE) == 0 || (error = vn_writechk(vp)) == 0)
- error = VOP_ACCESS(vp, mode, cred);
+ error = VOP_ACCESS(vp, mode, cred, p);
ndp->ni_dirp = uap->fname;
if (error = namei(ndp, p))
return (error);
ndp->ni_dirp = uap->fname;
if (error = namei(ndp, p))
return (error);
- error = vn_stat(ndp->ni_vp, &sb);
+ error = vn_stat(ndp->ni_vp, &sb, p);
vput(ndp->ni_vp);
if (error)
return (error);
vput(ndp->ni_vp);
if (error)
return (error);
ndp->ni_dirp = uap->fname;
if (error = namei(ndp, p))
return (error);
ndp->ni_dirp = uap->fname;
if (error = namei(ndp, p))
return (error);
- error = vn_stat(ndp->ni_vp, &sb);
+ error = vn_stat(ndp->ni_vp, &sb, p);
vput(ndp->ni_vp);
if (error)
return (error);
vput(ndp->ni_vp);
if (error)
return (error);
auio.uio_offset = 0;
auio.uio_rw = UIO_READ;
auio.uio_segflg = UIO_USERSPACE;
auio.uio_offset = 0;
auio.uio_rw = UIO_READ;
auio.uio_segflg = UIO_USERSPACE;
auio.uio_resid = uap->count;
error = VOP_READLINK(vp, &auio, p->p_ucred);
out:
auio.uio_resid = uap->count;
error = VOP_READLINK(vp, &auio, p->p_ucred);
out:
}
VATTR_NULL(&vattr);
vattr.va_flags = uap->flags;
}
VATTR_NULL(&vattr);
vattr.va_flags = uap->flags;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
out:
vput(vp);
return (error);
out:
vput(vp);
return (error);
}
VATTR_NULL(&vattr);
vattr.va_flags = uap->flags;
}
VATTR_NULL(&vattr);
vattr.va_flags = uap->flags;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
out:
VOP_UNLOCK(vp);
return (error);
out:
VOP_UNLOCK(vp);
return (error);
}
VATTR_NULL(&vattr);
vattr.va_mode = uap->fmode & 07777;
}
VATTR_NULL(&vattr);
vattr.va_mode = uap->fmode & 07777;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
out:
vput(vp);
return (error);
out:
vput(vp);
return (error);
}
VATTR_NULL(&vattr);
vattr.va_mode = uap->fmode & 07777;
}
VATTR_NULL(&vattr);
vattr.va_mode = uap->fmode & 07777;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
out:
VOP_UNLOCK(vp);
return (error);
out:
VOP_UNLOCK(vp);
return (error);
VATTR_NULL(&vattr);
vattr.va_uid = uap->uid;
vattr.va_gid = uap->gid;
VATTR_NULL(&vattr);
vattr.va_uid = uap->uid;
vattr.va_gid = uap->gid;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
out:
vput(vp);
return (error);
out:
vput(vp);
return (error);
VATTR_NULL(&vattr);
vattr.va_uid = uap->uid;
vattr.va_gid = uap->gid;
VATTR_NULL(&vattr);
vattr.va_uid = uap->uid;
vattr.va_gid = uap->gid;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
out:
VOP_UNLOCK(vp);
return (error);
out:
VOP_UNLOCK(vp);
return (error);
VATTR_NULL(&vattr);
vattr.va_atime = tv[0];
vattr.va_mtime = tv[1];
VATTR_NULL(&vattr);
vattr.va_atime = tv[0];
vattr.va_mtime = tv[1];
- error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
out:
vput(vp);
return (error);
out:
vput(vp);
return (error);
goto out;
}
if ((error = vn_writechk(vp)) ||
goto out;
}
if ((error = vn_writechk(vp)) ||
- (error = VOP_ACCESS(vp, VWRITE, p->p_ucred)))
+ (error = VOP_ACCESS(vp, VWRITE, p->p_ucred, p)))
goto out;
VATTR_NULL(&vattr);
vattr.va_size = uap->length;
goto out;
VATTR_NULL(&vattr);
vattr.va_size = uap->length;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
out:
vput(vp);
return (error);
out:
vput(vp);
return (error);
goto out;
VATTR_NULL(&vattr);
vattr.va_size = uap->length;
goto out;
VATTR_NULL(&vattr);
vattr.va_size = uap->length;
- error = VOP_SETATTR(vp, &vattr, fp->f_cred);
+ error = VOP_SETATTR(vp, &vattr, fp->f_cred, p);
out:
VOP_UNLOCK(vp);
return (error);
out:
VOP_UNLOCK(vp);
return (error);
return (error);
vp = (struct vnode *)fp->f_data;
VOP_LOCK(vp);
return (error);
vp = (struct vnode *)fp->f_data;
VOP_LOCK(vp);
- error = VOP_FSYNC(vp, fp->f_flag, fp->f_cred, MNT_WAIT);
+ error = VOP_FSYNC(vp, fp->f_flag, fp->f_cred, MNT_WAIT, p);
VOP_UNLOCK(vp);
return (error);
}
VOP_UNLOCK(vp);
return (error);
}
error = -1;
out:
if (!error) {
error = -1;
out:
if (!error) {
- error = VOP_RENAME(ndp, &tond);
+ error = VOP_RENAME(ndp, &tond, p);
} else {
VOP_ABORTOP(&tond);
if (tdvp == tvp)
} else {
VOP_ABORTOP(&tond);
if (tdvp == tvp)
VATTR_NULL(&vattr);
vattr.va_type = VDIR;
vattr.va_mode = (uap->dmode & 0777) &~ p->p_fd->fd_cmask;
VATTR_NULL(&vattr);
vattr.va_type = VDIR;
vattr.va_mode = (uap->dmode & 0777) &~ p->p_fd->fd_cmask;
- error = VOP_MKDIR(ndp, &vattr);
+ error = VOP_MKDIR(ndp, &vattr, p);
if (!error)
vput(ndp->ni_vp);
return (error);
if (!error)
vput(ndp->ni_vp);
return (error);
error = EBUSY;
out:
if (!error) {
error = EBUSY;
out:
if (!error) {
- error = VOP_RMDIR(ndp);
+ error = VOP_RMDIR(ndp, p);
} else {
VOP_ABORTOP(ndp);
if (ndp->ni_dvp == vp)
} else {
VOP_ABORTOP(ndp);
if (ndp->ni_dvp == vp)
auio.uio_iovcnt = 1;
auio.uio_rw = UIO_READ;
auio.uio_segflg = UIO_USERSPACE;
auio.uio_iovcnt = 1;
auio.uio_rw = UIO_READ;
auio.uio_segflg = UIO_USERSPACE;
auio.uio_resid = uap->count;
VOP_LOCK(vp);
auio.uio_offset = off = fp->f_offset;
auio.uio_resid = uap->count;
VOP_LOCK(vp);
auio.uio_offset = off = fp->f_offset;
error = EINVAL;
goto out;
}
error = EINVAL;
goto out;
}
- if (error = VOP_GETATTR(vp, &vattr, p->p_ucred))
+ if (error = VOP_GETATTR(vp, &vattr, p->p_ucred, p))
goto out;
if (p->p_ucred->cr_uid != vattr.va_uid &&
(error = suser(p->p_ucred, &p->p_acflag)))
goto out;
if (p->p_ucred->cr_uid != vattr.va_uid &&
(error = suser(p->p_ucred, &p->p_acflag)))