use FHASLOCK and SADVLCK to track processes using locks to save work in close
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 31 May 1991 06:32:12 +0000 (22:32 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 31 May 1991 06:32:12 +0000 (22:32 -0800)
SCCS-vsn: sys/kern/kern_descrip.c 7.25
SCCS-vsn: sys/kern/vfs_syscalls.c 7.72

usr/src/sys/kern/kern_descrip.c
usr/src/sys/kern/vfs_syscalls.c

index 1400e51..808b95a 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)kern_descrip.c      7.24 (Berkeley) %G%
+ *     @(#)kern_descrip.c      7.25 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
index 7752c69..a7ca36d 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)vfs_syscalls.c      7.71 (Berkeley) %G%
+ *     @(#)vfs_syscalls.c      7.72 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -582,6 +582,7 @@ open(p, uap, retval)
                fdp->fd_ofiles[indx] = NULL;
                return (error);
        }
                fdp->fd_ofiles[indx] = NULL;
                return (error);
        }
+       fp->f_flag = fmode & FMASK;
        if (fmode & (O_EXLOCK | O_SHLOCK)) {
                lf.l_whence = SEEK_SET;
                lf.l_start = 0;
        if (fmode & (O_EXLOCK | O_SHLOCK)) {
                lf.l_whence = SEEK_SET;
                lf.l_start = 0;
@@ -601,9 +602,9 @@ open(p, uap, retval)
                        fdp->fd_ofiles[indx] = NULL;
                        return (error);
                }
                        fdp->fd_ofiles[indx] = NULL;
                        return (error);
                }
+               fp->f_flag |= FHASLOCK;
        }
        VOP_UNLOCK(ndp->ni_vp);
        }
        VOP_UNLOCK(ndp->ni_vp);
-       fp->f_flag = fmode & FMASK;
        fp->f_type = DTYPE_VNODE;
        fp->f_ops = &vnops;
        fp->f_data = (caddr_t)ndp->ni_vp;
        fp->f_type = DTYPE_VNODE;
        fp->f_ops = &vnops;
        fp->f_data = (caddr_t)ndp->ni_vp;