summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2005-03-24 07:36:16 +0000
committerjeff <jeff@FreeBSD.org>2005-03-24 07:36:16 +0000
commit226bf6ead4eae284f20c2e0b92f5dd66207a9854 (patch)
treed9054fa7f8d4f79ec2995ff851d64982c658aa72 /sys/fs
parentc9591f9ecde6c2dcb84b934b65b4ffb61817f2d8 (diff)
downloadFreeBSD-src-226bf6ead4eae284f20c2e0b92f5dd66207a9854.zip
FreeBSD-src-226bf6ead4eae284f20c2e0b92f5dd66207a9854.tar.gz
- Update vfs_root implementations to match the new prototype. None of
these filesystems will support shared locks until they are explicitly modified to do so. Careful review must be done to ensure that this is safe for each individual filesystem. Sponsored by: Isilon Systems, Inc.
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/devfs/devfs_vfsops.c5
-rw-r--r--sys/fs/fdescfs/fdesc_vfsops.c3
-rw-r--r--sys/fs/hpfs/hpfs_vfsops.c3
-rw-r--r--sys/fs/msdosfs/msdosfs_vfsops.c6
-rw-r--r--sys/fs/ntfs/ntfs_vfsops.c1
-rw-r--r--sys/fs/nullfs/null_vfsops.c3
-rw-r--r--sys/fs/nwfs/nwfs_vfsops.c4
-rw-r--r--sys/fs/portalfs/portal_vfsops.c3
-rw-r--r--sys/fs/pseudofs/pseudofs.c2
-rw-r--r--sys/fs/pseudofs/pseudofs.h4
-rw-r--r--sys/fs/smbfs/smbfs_vfsops.c4
-rw-r--r--sys/fs/udf/udf_vfsops.c2
-rw-r--r--sys/fs/umapfs/umap_vfsops.c3
-rw-r--r--sys/fs/unionfs/union_vfsops.c3
-rw-r--r--sys/fs/unionfs/union_vnops.c2
15 files changed, 29 insertions, 19 deletions
diff --git a/sys/fs/devfs/devfs_vfsops.c b/sys/fs/devfs/devfs_vfsops.c
index 4c1c7b8..3721295 100644
--- a/sys/fs/devfs/devfs_vfsops.c
+++ b/sys/fs/devfs/devfs_vfsops.c
@@ -96,7 +96,7 @@ devfs_mount(struct mount *mp, struct thread *td)
fmp->dm_basedir = fmp->dm_rootdir;
devfs_rules_newmount(fmp, td);
- error = devfs_root(mp, &rvp, td);
+ error = devfs_root(mp, LK_EXCLUSIVE, &rvp, td);
if (error) {
lockdestroy(&fmp->dm_lock);
FREE(fmp, M_DEVFS);
@@ -136,8 +136,9 @@ devfs_unmount(mp, mntflags, td)
/* Return locked reference to root. */
static int
-devfs_root(mp, vpp, td)
+devfs_root(mp, flags, vpp, td)
struct mount *mp;
+ int flags;
struct vnode **vpp;
struct thread *td;
{
diff --git a/sys/fs/fdescfs/fdesc_vfsops.c b/sys/fs/fdescfs/fdesc_vfsops.c
index e9bb5c7..ebd17a4 100644
--- a/sys/fs/fdescfs/fdesc_vfsops.c
+++ b/sys/fs/fdescfs/fdesc_vfsops.c
@@ -126,8 +126,9 @@ fdesc_unmount(mp, mntflags, td)
}
static int
-fdesc_root(mp, vpp, td)
+fdesc_root(mp, flags, vpp, td)
struct mount *mp;
+ int flags;
struct vnode **vpp;
struct thread *td;
{
diff --git a/sys/fs/hpfs/hpfs_vfsops.c b/sys/fs/hpfs/hpfs_vfsops.c
index 1757de9..5ce5215 100644
--- a/sys/fs/hpfs/hpfs_vfsops.c
+++ b/sys/fs/hpfs/hpfs_vfsops.c
@@ -306,7 +306,7 @@ hpfs_mountfs(devvp, mp, td)
goto failed;
}
- error = hpfs_root(mp, &vp, td);
+ error = hpfs_root(mp, LK_EXCLUSIVE, &vp, td);
if (error) {
hpfs_cpdeinit(hpmp);
hpfs_bmdeinit(hpmp);
@@ -371,6 +371,7 @@ hpfs_unmount(
static int
hpfs_root(
struct mount *mp,
+ int flags,
struct vnode **vpp,
struct thread *td )
{
diff --git a/sys/fs/msdosfs/msdosfs_vfsops.c b/sys/fs/msdosfs/msdosfs_vfsops.c
index d02b952..288f22d 100644
--- a/sys/fs/msdosfs/msdosfs_vfsops.c
+++ b/sys/fs/msdosfs/msdosfs_vfsops.c
@@ -186,7 +186,8 @@ update_mp(mp, td)
if (FAT32(pmp))
pmp->pm_flags |= MSDOSFSMNT_LONGNAME;
else {
- if ((error = msdosfs_root(mp, &rootvp, td)) != 0)
+ if ((error =
+ msdosfs_root(mp, LK_EXCLUSIVE, &rootvp, td)) != 0)
return error;
pmp->pm_flags |= findwin95(VTODE(rootvp))
? MSDOSFSMNT_LONGNAME
@@ -804,8 +805,9 @@ msdosfs_unmount(mp, mntflags, td)
}
static int
-msdosfs_root(mp, vpp, td)
+msdosfs_root(mp, flags, vpp, td)
struct mount *mp;
+ int flags;
struct vnode **vpp;
struct thread *td;
{
diff --git a/sys/fs/ntfs/ntfs_vfsops.c b/sys/fs/ntfs/ntfs_vfsops.c
index e3ba1a7..1aae24a 100644
--- a/sys/fs/ntfs/ntfs_vfsops.c
+++ b/sys/fs/ntfs/ntfs_vfsops.c
@@ -525,6 +525,7 @@ ntfs_unmount(
static int
ntfs_root(
struct mount *mp,
+ int flags,
struct vnode **vpp,
struct thread *td )
{
diff --git a/sys/fs/nullfs/null_vfsops.c b/sys/fs/nullfs/null_vfsops.c
index ad6e1e9..56b826c 100644
--- a/sys/fs/nullfs/null_vfsops.c
+++ b/sys/fs/nullfs/null_vfsops.c
@@ -223,8 +223,9 @@ nullfs_unmount(mp, mntflags, td)
}
static int
-nullfs_root(mp, vpp, td)
+nullfs_root(mp, flags, vpp, td)
struct mount *mp;
+ int flags;
struct vnode **vpp;
struct thread *td;
{
diff --git a/sys/fs/nwfs/nwfs_vfsops.c b/sys/fs/nwfs/nwfs_vfsops.c
index af8514e..604b6ec 100644
--- a/sys/fs/nwfs/nwfs_vfsops.c
+++ b/sys/fs/nwfs/nwfs_vfsops.c
@@ -228,7 +228,7 @@ static int nwfs_mount(struct mount *mp, struct thread *td)
/* protect against invalid mount points */
nmp->m.mount_point[sizeof(nmp->m.mount_point)-1] = '\0';
vfs_getnewfsid(mp);
- error = nwfs_root(mp, &vp, td);
+ error = nwfs_root(mp, LK_EXCLUSIVE, &vp, td);
if (error)
goto bad;
/*
@@ -277,7 +277,7 @@ nwfs_unmount(struct mount *mp, int mntflags, struct thread *td)
/* Return locked vnode to root of a filesystem */
static int
-nwfs_root(struct mount *mp, struct vnode **vpp, struct thread *td) {
+nwfs_root(struct mount *mp, int flags, struct vnode **vpp, struct thread *td) {
struct vnode *vp;
struct nwmount *nmp;
struct nwnode *np;
diff --git a/sys/fs/portalfs/portal_vfsops.c b/sys/fs/portalfs/portal_vfsops.c
index 46c0ab0..a106544 100644
--- a/sys/fs/portalfs/portal_vfsops.c
+++ b/sys/fs/portalfs/portal_vfsops.c
@@ -202,8 +202,9 @@ portal_unmount(mp, mntflags, td)
}
static int
-portal_root(mp, vpp, td)
+portal_root(mp, flags, vpp, td)
struct mount *mp;
+ int flags;
struct vnode **vpp;
struct thread *td;
{
diff --git a/sys/fs/pseudofs/pseudofs.c b/sys/fs/pseudofs/pseudofs.c
index 749c0eb..1fe0371 100644
--- a/sys/fs/pseudofs/pseudofs.c
+++ b/sys/fs/pseudofs/pseudofs.c
@@ -305,7 +305,7 @@ pfs_unmount(struct mount *mp, int mntflags, struct thread *td)
* Return a root vnode
*/
int
-pfs_root(struct mount *mp, struct vnode **vpp, struct thread *td)
+pfs_root(struct mount *mp, int flags, struct vnode **vpp, struct thread *td)
{
struct pfs_info *pi;
diff --git a/sys/fs/pseudofs/pseudofs.h b/sys/fs/pseudofs/pseudofs.h
index a088670..8eaa137 100644
--- a/sys/fs/pseudofs/pseudofs.h
+++ b/sys/fs/pseudofs/pseudofs.h
@@ -201,8 +201,8 @@ int pfs_mount (struct pfs_info *pi, struct mount *mp,
struct thread *td);
int pfs_unmount (struct mount *mp, int mntflags,
struct thread *td);
-int pfs_root (struct mount *mp, struct vnode **vpp,
- struct thread *td);
+int pfs_root (struct mount *mp, int flags,
+ struct vnode **vpp, struct thread *td);
int pfs_statfs (struct mount *mp, struct statfs *sbp,
struct thread *td);
int pfs_init (struct pfs_info *pi, struct vfsconf *vfc);
diff --git a/sys/fs/smbfs/smbfs_vfsops.c b/sys/fs/smbfs/smbfs_vfsops.c
index 8b75ed3..b774443 100644
--- a/sys/fs/smbfs/smbfs_vfsops.c
+++ b/sys/fs/smbfs/smbfs_vfsops.c
@@ -243,7 +243,7 @@ smbfs_mount(struct mount *mp, struct thread *td)
}
}
vfs_getnewfsid(mp);
- error = smbfs_root(mp, &vp, td);
+ error = smbfs_root(mp, LK_EXCLUSIVE, &vp, td);
if (error)
goto bad;
VOP_UNLOCK(vp, 0, td);
@@ -316,7 +316,7 @@ smbfs_unmount(struct mount *mp, int mntflags, struct thread *td)
* Return locked root vnode of a filesystem
*/
static int
-smbfs_root(struct mount *mp, struct vnode **vpp, struct thread *td)
+smbfs_root(struct mount *mp, int flags, struct vnode **vpp, struct thread *td)
{
struct smbmount *smp = VFSTOSMBFS(mp);
struct vnode *vp;
diff --git a/sys/fs/udf/udf_vfsops.c b/sys/fs/udf/udf_vfsops.c
index b5eb3cd..f0db5b2 100644
--- a/sys/fs/udf/udf_vfsops.c
+++ b/sys/fs/udf/udf_vfsops.c
@@ -531,7 +531,7 @@ udf_unmount(struct mount *mp, int mntflags, struct thread *td)
}
static int
-udf_root(struct mount *mp, struct vnode **vpp, struct thread *td)
+udf_root(struct mount *mp, int flags, struct vnode **vpp, struct thread *td)
{
struct udf_mnt *udfmp;
struct vnode *vp;
diff --git a/sys/fs/umapfs/umap_vfsops.c b/sys/fs/umapfs/umap_vfsops.c
index a516717..1d3c74c 100644
--- a/sys/fs/umapfs/umap_vfsops.c
+++ b/sys/fs/umapfs/umap_vfsops.c
@@ -275,8 +275,9 @@ umapfs_unmount(mp, mntflags, td)
}
static int
-umapfs_root(mp, vpp, td)
+umapfs_root(mp, flags, vpp, td)
struct mount *mp;
+ int flags;
struct vnode **vpp;
struct thread *td;
{
diff --git a/sys/fs/unionfs/union_vfsops.c b/sys/fs/unionfs/union_vfsops.c
index 2b7d2e9..0f8539b 100644
--- a/sys/fs/unionfs/union_vfsops.c
+++ b/sys/fs/unionfs/union_vfsops.c
@@ -382,8 +382,9 @@ union_unmount(mp, mntflags, td)
}
static int
-union_root(mp, vpp, td)
+union_root(mp, flags, vpp, td)
struct mount *mp;
+ int flags;
struct vnode **vpp;
struct thread *td;
{
diff --git a/sys/fs/unionfs/union_vnops.c b/sys/fs/unionfs/union_vnops.c
index 7aef07c..69699fa 100644
--- a/sys/fs/unionfs/union_vnops.c
+++ b/sys/fs/unionfs/union_vnops.c
@@ -264,7 +264,7 @@ union_lookup1(udvp, pdvp, vpp, cnp)
relock_pdvp = 1;
vput(dvp);
dvp = NULL;
- error = VFS_ROOT(mp, &dvp, td);
+ error = VFS_ROOT(mp, LK_EXCLUSIVE, &dvp, td);
vfs_unbusy(mp, td);
OpenPOWER on IntegriCloud