summaryrefslogtreecommitdiffstats
path: root/sys/compat
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2003-06-22 08:41:43 +0000
committerphk <phk@FreeBSD.org>2003-06-22 08:41:43 +0000
commitc81c59299bd255eb5ab7510c9e84e9c54b8003d0 (patch)
treec8262a3d430fc3cafab7fb6aec641ce293cd3361 /sys/compat
parent4a223af282e5f60223c443ce3755f565f9db2465 (diff)
downloadFreeBSD-src-c81c59299bd255eb5ab7510c9e84e9c54b8003d0.zip
FreeBSD-src-c81c59299bd255eb5ab7510c9e84e9c54b8003d0.tar.gz
Add a f_vnode field to struct file.
Several of the subtypes have an associated vnode which is used for stuff like the f*() functions. By giving the vnode a speparate field, a number of checks for the specific subtype can be replaced simply with a check for f_vnode != NULL, and we can later free f_data up to subtype specific use. At this point in time, f_data still points to the vnode, so any code I might have overlooked will still work.
Diffstat (limited to 'sys/compat')
-rw-r--r--sys/compat/linux/linux_file.c2
-rw-r--r--sys/compat/linux/linux_stats.c2
-rw-r--r--sys/compat/svr4/svr4_fcntl.c2
-rw-r--r--sys/compat/svr4/svr4_misc.c6
4 files changed, 6 insertions, 6 deletions
diff --git a/sys/compat/linux/linux_file.c b/sys/compat/linux/linux_file.c
index d61483a..96af89c 100644
--- a/sys/compat/linux/linux_file.c
+++ b/sys/compat/linux/linux_file.c
@@ -271,7 +271,7 @@ getdents_common(struct thread *td, struct linux_getdents64_args *args,
return (EBADF);
}
- vp = fp->f_data;
+ vp = fp->f_vnode;
if (vp->v_type != VDIR) {
fdrop(fp, td);
return (EINVAL);
diff --git a/sys/compat/linux/linux_stats.c b/sys/compat/linux/linux_stats.c
index 3b873f8..8d90b1f 100644
--- a/sys/compat/linux/linux_stats.c
+++ b/sys/compat/linux/linux_stats.c
@@ -290,7 +290,7 @@ linux_fstatfs(struct thread *td, struct linux_fstatfs_args *args)
error = getvnode(td->td_proc->p_fd, args->fd, &fp);
if (error)
return error;
- mp = ((struct vnode *)fp->f_data)->v_mount;
+ mp = fp->f_vnode->v_mount;
#ifdef MAC
error = mac_check_mount_stat(td->td_ucred, mp);
if (error) {
diff --git a/sys/compat/svr4/svr4_fcntl.c b/sys/compat/svr4/svr4_fcntl.c
index c21afa7..7a01b15 100644
--- a/sys/compat/svr4/svr4_fcntl.c
+++ b/sys/compat/svr4/svr4_fcntl.c
@@ -312,7 +312,7 @@ fd_truncate(td, fd, flp)
if ((error = fget(td, fd, &fp)) != 0)
return (error);
- vp = fp->f_data;
+ vp = fp->f_vnode;
if (fp->f_type != DTYPE_VNODE || vp->v_type == VFIFO) {
fdrop(fp, td);
diff --git a/sys/compat/svr4/svr4_misc.c b/sys/compat/svr4/svr4_misc.c
index 7cdb576..1766e88 100644
--- a/sys/compat/svr4/svr4_misc.c
+++ b/sys/compat/svr4/svr4_misc.c
@@ -272,7 +272,7 @@ svr4_sys_getdents64(td, uap)
return (EBADF);
}
- vp = fp->f_data;
+ vp = fp->f_vnode;
if (vp->v_type != VDIR) {
fdrop(fp, td);
@@ -452,7 +452,7 @@ svr4_sys_getdents(td, uap)
return (EBADF);
}
- vp = fp->f_data;
+ vp = fp->f_vnode;
if (vp->v_type != VDIR) {
fdrop(fp, td);
return (EINVAL);
@@ -628,7 +628,7 @@ svr4_sys_fchroot(td, uap)
return error;
if ((error = getvnode(fdp, uap->fd, &fp)) != 0)
return error;
- vp = fp->f_data;
+ vp = fp->f_vnode;
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
if (vp->v_type != VDIR)
error = ENOTDIR;
OpenPOWER on IntegriCloud