summaryrefslogtreecommitdiffstats
path: root/sys/fs/fdescfs
diff options
context:
space:
mode:
authorattilio <attilio@FreeBSD.org>2009-05-11 15:33:26 +0000
committerattilio <attilio@FreeBSD.org>2009-05-11 15:33:26 +0000
commit1dcb84131b6679f5d53452314d4ca1dfe2d8c5f0 (patch)
tree6591f00318da636f44a6ceb26f517e7795eb1b44 /sys/fs/fdescfs
parentebcb20267286e4ffadb3f603af56bd7a1df1f422 (diff)
downloadFreeBSD-src-1dcb84131b6679f5d53452314d4ca1dfe2d8c5f0.zip
FreeBSD-src-1dcb84131b6679f5d53452314d4ca1dfe2d8c5f0.tar.gz
Remove the thread argument from the FSD (File-System Dependent) parts of
the VFS. Now all the VFS_* functions and relating parts don't want the context as long as it always refers to curthread. In some points, in particular when dealing with VOPs and functions living in the same namespace (eg. vflush) which still need to be converted, pass curthread explicitly in order to retain the old behaviour. Such loose ends will be fixed ASAP. While here fix a bug: now, UFS_EXTATTR can be compiled alone without the UFS_EXTATTR_AUTOSTART option. VFS KPI is heavilly changed by this commit so thirdy parts modules needs to be recompiled. Bump __FreeBSD_version in order to signal such situation.
Diffstat (limited to 'sys/fs/fdescfs')
-rw-r--r--sys/fs/fdescfs/fdesc.h2
-rw-r--r--sys/fs/fdescfs/fdesc_vfsops.c22
-rw-r--r--sys/fs/fdescfs/fdesc_vnops.c7
3 files changed, 16 insertions, 15 deletions
diff --git a/sys/fs/fdescfs/fdesc.h b/sys/fs/fdescfs/fdesc.h
index 06f53fb..477193a 100644
--- a/sys/fs/fdescfs/fdesc.h
+++ b/sys/fs/fdescfs/fdesc.h
@@ -65,5 +65,5 @@ extern struct mtx fdesc_hashmtx;
extern vfs_init_t fdesc_init;
extern vfs_uninit_t fdesc_uninit;
extern int fdesc_allocvp(fdntype, unsigned, int, struct mount *,
- struct vnode **, struct thread *);
+ struct vnode **);
#endif /* _KERNEL */
diff --git a/sys/fs/fdescfs/fdesc_vfsops.c b/sys/fs/fdescfs/fdesc_vfsops.c
index 9651313..fdbcaba 100644
--- a/sys/fs/fdescfs/fdesc_vfsops.c
+++ b/sys/fs/fdescfs/fdesc_vfsops.c
@@ -64,7 +64,7 @@ static vfs_root_t fdesc_root;
* Compatibility shim for old mount(2) system call.
*/
int
-fdesc_cmount(struct mntarg *ma, void *data, int flags, struct thread *td)
+fdesc_cmount(struct mntarg *ma, void *data, int flags)
{
return kernel_mount(ma, flags);
}
@@ -73,7 +73,7 @@ fdesc_cmount(struct mntarg *ma, void *data, int flags, struct thread *td)
* Mount the per-process file descriptors (/dev/fd)
*/
static int
-fdesc_mount(struct mount *mp, struct thread *td)
+fdesc_mount(struct mount *mp)
{
int error = 0;
struct fdescmount *fmp;
@@ -94,7 +94,7 @@ fdesc_mount(struct mount *mp, struct thread *td)
*/
mp->mnt_data = (qaddr_t) fmp;
fmp->flags = 0;
- error = fdesc_allocvp(Froot, -1, FD_ROOT, mp, &rvp, td);
+ error = fdesc_allocvp(Froot, -1, FD_ROOT, mp, &rvp);
if (error) {
free(fmp, M_FDESCMNT);
mp->mnt_data = 0;
@@ -116,10 +116,9 @@ fdesc_mount(struct mount *mp, struct thread *td)
}
static int
-fdesc_unmount(mp, mntflags, td)
+fdesc_unmount(mp, mntflags)
struct mount *mp;
int mntflags;
- struct thread *td;
{
struct fdescmount *fmp;
caddr_t data;
@@ -143,7 +142,7 @@ fdesc_unmount(mp, mntflags, td)
* There is 1 extra root vnode reference corresponding
* to f_root.
*/
- if ((error = vflush(mp, 1, flags, td)) != 0)
+ if ((error = vflush(mp, 1, flags, curthread)) != 0)
return (error);
/*
@@ -160,11 +159,10 @@ fdesc_unmount(mp, mntflags, td)
}
static int
-fdesc_root(mp, flags, vpp, td)
+fdesc_root(mp, flags, vpp)
struct mount *mp;
int flags;
struct vnode **vpp;
- struct thread *td;
{
struct vnode *vp;
@@ -172,23 +170,25 @@ fdesc_root(mp, flags, vpp, td)
* Return locked reference to root.
*/
vp = VFSTOFDESC(mp)->f_root;
- vget(vp, LK_EXCLUSIVE | LK_RETRY, td);
+ vget(vp, LK_EXCLUSIVE | LK_RETRY, curthread);
*vpp = vp;
return (0);
}
static int
-fdesc_statfs(mp, sbp, td)
+fdesc_statfs(mp, sbp)
struct mount *mp;
struct statfs *sbp;
- struct thread *td;
{
+ struct thread *td;
struct filedesc *fdp;
int lim;
int i;
int last;
int freefd;
+ td = curthread;
+
/*
* Compute number of free file descriptors.
* [ Strange results will ensue if the open file
diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c
index d1788ae..9857d93 100644
--- a/sys/fs/fdescfs/fdesc_vnops.c
+++ b/sys/fs/fdescfs/fdesc_vnops.c
@@ -145,20 +145,21 @@ fdesc_remove_entry(struct fdescnode *fd)
}
int
-fdesc_allocvp(ftype, fd_fd, ix, mp, vpp, td)
+fdesc_allocvp(ftype, fd_fd, ix, mp, vpp)
fdntype ftype;
unsigned fd_fd;
int ix;
struct mount *mp;
struct vnode **vpp;
- struct thread *td;
{
struct fdescmount *fmp;
struct fdhashhead *fc;
struct fdescnode *fd, *fd2;
struct vnode *vp, *vp2;
+ struct thread *td;
int error = 0;
+ td = curthread;
fc = FD_NHASH(ix);
loop:
mtx_lock(&fdesc_hashmtx);
@@ -328,7 +329,7 @@ fdesc_lookup(ap)
vhold(dvp);
VOP_UNLOCK(dvp, 0);
error = fdesc_allocvp(Fdesc, fd, FD_DESC + fd, dvp->v_mount,
- &fvp, td);
+ &fvp);
fdrop(fp, td);
/*
* The root vnode must be locked last to prevent deadlock condition.
OpenPOWER on IntegriCloud