diff options
author | phk <phk@FreeBSD.org> | 1999-11-09 14:15:33 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 1999-11-09 14:15:33 +0000 |
commit | 8c9bc6b1465e40acc6ad183f2048b478838442e7 (patch) | |
tree | 9ecaa92a6de6fdd1aeb455d59ce671785a1d0801 /sys/fs/cd9660 | |
parent | 90188d1d4bda4b0a373a1823aa4a02e3f86da9c6 (diff) | |
download | FreeBSD-src-8c9bc6b1465e40acc6ad183f2048b478838442e7.zip FreeBSD-src-8c9bc6b1465e40acc6ad183f2048b478838442e7.tar.gz |
Next step in the device cleanup process.
Correctly lock vnodes when calling VOP_OPEN() from filesystem mount code.
Unify spec_open() for bdev and cdev cases.
Remove the disabled bdev specific read/write code.
Diffstat (limited to 'sys/fs/cd9660')
-rw-r--r-- | sys/fs/cd9660/cd9660_vfsops.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/fs/cd9660/cd9660_vfsops.c b/sys/fs/cd9660/cd9660_vfsops.c index f7d418d..8702879 100644 --- a/sys/fs/cd9660/cd9660_vfsops.c +++ b/sys/fs/cd9660/cd9660_vfsops.c @@ -296,8 +296,12 @@ iso_mountfs(devvp, mp, p, argp) if ((error = vinvalbuf(devvp, V_SAVE, p->p_ucred, p, 0, 0))) return (error); - if ((error = VOP_OPEN(devvp, FREAD, FSCRED, p))) + vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p); + error = VOP_OPEN(devvp, FREAD, FSCRED, p); + VOP_UNLOCK(devvp, 0, p); + if (error) return error; + needclose = 1; /* This is the "logical sector size". The standard says this @@ -523,7 +527,7 @@ cd9660_unmount(mp, mntflags, p) { register struct iso_mnt *isomp; int error, flags = 0; - + if (mntflags & MNT_FORCE) flags |= FORCECLOSE; #if 0 @@ -536,7 +540,6 @@ cd9660_unmount(mp, mntflags, p) isomp = VFSTOISOFS(mp); - isomp->im_devvp->v_specmountpoint = NULL; error = VOP_CLOSE(isomp->im_devvp, FREAD, NOCRED, p); vrele(isomp->im_devvp); |