aboutsummaryrefslogtreecommitdiff
path: root/sys/miscfs
diff options
context:
space:
mode:
authorJulian Elischer <julian@FreeBSD.org>1998-03-08 09:59:44 +0000
committerJulian Elischer <julian@FreeBSD.org>1998-03-08 09:59:44 +0000
commitb1897c197c06ebd09ab26a462489bd331c96ce2e (patch)
treeb85bc47a8c7d86c53fcbbd6d7f7c531569f43a1f /sys/miscfs
parentfe80c56322a7dd0412230051cb1b7a0a66a74b74 (diff)
Notes
Diffstat (limited to 'sys/miscfs')
-rw-r--r--sys/miscfs/specfs/spec_vnops.c10
-rw-r--r--sys/miscfs/specfs/specdev.h11
2 files changed, 11 insertions, 10 deletions
diff --git a/sys/miscfs/specfs/spec_vnops.c b/sys/miscfs/specfs/spec_vnops.c
index 9c3c8450867d..666322f65609 100644
--- a/sys/miscfs/specfs/spec_vnops.c
+++ b/sys/miscfs/specfs/spec_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)spec_vnops.c 8.14 (Berkeley) 5/21/95
- * $Id: spec_vnops.c,v 1.58 1998/03/07 21:35:52 dyson Exp $
+ * $Id: spec_vnops.c,v 1.59 1998/03/08 08:46:18 dyson Exp $
*/
#include <sys/param.h>
@@ -548,8 +548,12 @@ spec_strategy(ap)
struct buf *a_bp;
} */ *ap;
{
+ struct buf *bp;
- (*bdevsw[major(ap->a_bp->b_dev)]->d_strategy)(ap->a_bp);
+ bp = ap->a_bp;
+ if ((LIST_FIRST(&bp->b_dep)) != NULL && bioops.io_start)
+ (*bioops.io_start)(bp);
+ (*bdevsw[major(bp->b_dev)]->d_strategy)(bp);
return (0);
}
@@ -633,7 +637,9 @@ spec_close(ap)
* we must invalidate any in core blocks, so that
* we can, for instance, change floppy disks.
*/
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, ap->a_p);
error = vinvalbuf(vp, V_SAVE, ap->a_cred, ap->a_p, 0, 0);
+ VOP_UNLOCK(vp, 0, ap->a_p);
if (error)
return (error);
diff --git a/sys/miscfs/specfs/specdev.h b/sys/miscfs/specfs/specdev.h
index 06a5cdd9bbe5..b4c6f7750458 100644
--- a/sys/miscfs/specfs/specdev.h
+++ b/sys/miscfs/specfs/specdev.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)specdev.h 8.6 (Berkeley) 5/21/95
- * $Id: specdev.h,v 1.12 1997/09/14 02:58:03 peter Exp $
+ * $Id: specdev.h,v 1.13 1997/10/15 13:23:21 phk Exp $
*/
/*
@@ -42,7 +42,7 @@
struct specinfo {
struct vnode **si_hashchain;
struct vnode *si_specnext;
- long si_flags;
+ struct mount *si_mountpoint;
dev_t si_rdev;
};
/*
@@ -51,12 +51,7 @@ struct specinfo {
#define v_rdev v_specinfo->si_rdev
#define v_hashchain v_specinfo->si_hashchain
#define v_specnext v_specinfo->si_specnext
-#define v_specflags v_specinfo->si_flags
-
-/*
- * Flags for specinfo
- */
-#define SI_MOUNTEDON 0x0001 /* block special device is mounted on */
+#define v_specmountpoint v_specinfo->si_mountpoint
/*
* Special device management