summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/kern/spec_vnops.c11
-rw-r--r--sys/kern/vfs_subr.c1
-rw-r--r--sys/miscfs/specfs/spec_vnops.c11
-rw-r--r--sys/miscfs/specfs/specdev.h4
-rw-r--r--sys/sys/specdev.h4
5 files changed, 17 insertions, 14 deletions
diff --git a/sys/kern/spec_vnops.c b/sys/kern/spec_vnops.c
index 35d3d301038..321e910cd1b 100644
--- a/sys/kern/spec_vnops.c
+++ b/sys/kern/spec_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: spec_vnops.c,v 1.8 1996/12/22 16:05:24 kstailey Exp $ */
+/* $OpenBSD: spec_vnops.c,v 1.9 1997/01/04 17:10:04 kstailey Exp $ */
/* $NetBSD: spec_vnops.c,v 1.29 1996/04/22 01:42:38 christos Exp $ */
/*
@@ -50,6 +50,7 @@
#include <sys/ioctl.h>
#include <sys/file.h>
#include <sys/disklabel.h>
+#include <sys/lockf.h>
#include <miscfs/specfs/specdev.h>
@@ -715,12 +716,10 @@ spec_advlock(v)
struct flock *a_fl;
int a_flags;
} */ *ap = v;
+ register struct vnode *vp = ap->a_vp;
- /* XXX Should call lf_advlock() from here, but no snode. */
- /* Instead call through non-special file on same filesystem. */
-
- return (VCALL(ap->a_vp->v_mount->mnt_vnodelist.lh_first,
- VOFFSET(vop_advlock), ap));
+ return (lf_advlock(&vp->v_speclockf, (off_t)0, ap->a_id,
+ ap->a_op, ap->a_fl, ap->a_flags));
}
/*
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 888163257e4..41ea7f092dc 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -708,6 +708,7 @@ loop:
nvp->v_hashchain = vpp;
nvp->v_specnext = *vpp;
nvp->v_specflags = 0;
+ nvp->v_speclockf = NULL;
*vpp = nvp;
if (vp != NULL) {
nvp->v_flag |= VALIASED;
diff --git a/sys/miscfs/specfs/spec_vnops.c b/sys/miscfs/specfs/spec_vnops.c
index 35d3d301038..321e910cd1b 100644
--- a/sys/miscfs/specfs/spec_vnops.c
+++ b/sys/miscfs/specfs/spec_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: spec_vnops.c,v 1.8 1996/12/22 16:05:24 kstailey Exp $ */
+/* $OpenBSD: spec_vnops.c,v 1.9 1997/01/04 17:10:04 kstailey Exp $ */
/* $NetBSD: spec_vnops.c,v 1.29 1996/04/22 01:42:38 christos Exp $ */
/*
@@ -50,6 +50,7 @@
#include <sys/ioctl.h>
#include <sys/file.h>
#include <sys/disklabel.h>
+#include <sys/lockf.h>
#include <miscfs/specfs/specdev.h>
@@ -715,12 +716,10 @@ spec_advlock(v)
struct flock *a_fl;
int a_flags;
} */ *ap = v;
+ register struct vnode *vp = ap->a_vp;
- /* XXX Should call lf_advlock() from here, but no snode. */
- /* Instead call through non-special file on same filesystem. */
-
- return (VCALL(ap->a_vp->v_mount->mnt_vnodelist.lh_first,
- VOFFSET(vop_advlock), ap));
+ return (lf_advlock(&vp->v_speclockf, (off_t)0, ap->a_id,
+ ap->a_op, ap->a_fl, ap->a_flags));
}
/*
diff --git a/sys/miscfs/specfs/specdev.h b/sys/miscfs/specfs/specdev.h
index 3a9729abb1d..9f58fa7acb4 100644
--- a/sys/miscfs/specfs/specdev.h
+++ b/sys/miscfs/specfs/specdev.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: specdev.h,v 1.2 1996/02/27 08:05:17 niklas Exp $ */
+/* $OpenBSD: specdev.h,v 1.3 1997/01/04 17:10:05 kstailey Exp $ */
/* $NetBSD: specdev.h,v 1.12 1996/02/13 13:13:01 mycroft Exp $ */
/*
@@ -46,6 +46,7 @@ struct specinfo {
struct vnode *si_specnext;
long si_flags;
dev_t si_rdev;
+ struct lockf *si_lockf;
};
/*
* Exported shorthand
@@ -54,6 +55,7 @@ struct specinfo {
#define v_hashchain v_specinfo->si_hashchain
#define v_specnext v_specinfo->si_specnext
#define v_specflags v_specinfo->si_flags
+#define v_speclockf v_specinfo->si_lockf
/*
* Flags for specinfo
diff --git a/sys/sys/specdev.h b/sys/sys/specdev.h
index 3a9729abb1d..9f58fa7acb4 100644
--- a/sys/sys/specdev.h
+++ b/sys/sys/specdev.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: specdev.h,v 1.2 1996/02/27 08:05:17 niklas Exp $ */
+/* $OpenBSD: specdev.h,v 1.3 1997/01/04 17:10:05 kstailey Exp $ */
/* $NetBSD: specdev.h,v 1.12 1996/02/13 13:13:01 mycroft Exp $ */
/*
@@ -46,6 +46,7 @@ struct specinfo {
struct vnode *si_specnext;
long si_flags;
dev_t si_rdev;
+ struct lockf *si_lockf;
};
/*
* Exported shorthand
@@ -54,6 +55,7 @@ struct specinfo {
#define v_hashchain v_specinfo->si_hashchain
#define v_specnext v_specinfo->si_specnext
#define v_specflags v_specinfo->si_flags
+#define v_speclockf v_specinfo->si_lockf
/*
* Flags for specinfo