spec_advlock() via lf_advlock()
authorkstailey <kstailey@openbsd.org>
Sat, 4 Jan 1997 17:10:03 +0000 (17:10 +0000)
committerkstailey <kstailey@openbsd.org>
Sat, 4 Jan 1997 17:10:03 +0000 (17:10 +0000)
sys/kern/spec_vnops.c
sys/kern/vfs_subr.c
sys/miscfs/specfs/spec_vnops.c
sys/miscfs/specfs/specdev.h
sys/sys/specdev.h

index 35d3d30..321e910 100644 (file)
@@ -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));
 }
 
 /*
index 8881632..41ea7f0 100644 (file)
@@ -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;
index 35d3d30..321e910 100644 (file)
@@ -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));
 }
 
 /*
index 3a9729a..9f58fa7 100644 (file)
@@ -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
index 3a9729a..9f58fa7 100644 (file)
@@ -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