Author: kib
Date: Fri Sep  5 13:22:28 2014
New Revision: 271161
URL: http://svnweb.freebsd.org/changeset/base/271161

Log:
  Add function and wrapper to switch lockmgr and vnode lock back to
  auto-promotion of shared to exclusive.
  
  Approved by:  re (gjb)

Modified:
  stable/10/sys/kern/kern_lock.c
  stable/10/sys/sys/lockmgr.h
  stable/10/sys/sys/vnode.h
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/kern/kern_lock.c
==============================================================================
--- stable/10/sys/kern/kern_lock.c      Fri Sep  5 11:48:32 2014        
(r271160)
+++ stable/10/sys/kern/kern_lock.c      Fri Sep  5 13:22:28 2014        
(r271161)
@@ -419,6 +419,14 @@ lockallowshare(struct lock *lk)
 }
 
 void
+lockdisableshare(struct lock *lk)
+{
+
+       lockmgr_assert(lk, KA_XLOCKED);
+       lk->lock_object.lo_flags |= LK_NOSHARE;
+}
+
+void
 lockallowrecurse(struct lock *lk)
 {
 

Modified: stable/10/sys/sys/lockmgr.h
==============================================================================
--- stable/10/sys/sys/lockmgr.h Fri Sep  5 11:48:32 2014        (r271160)
+++ stable/10/sys/sys/lockmgr.h Fri Sep  5 13:22:28 2014        (r271161)
@@ -77,6 +77,7 @@ void   lockallowrecurse(struct lock *lk);
 void    lockallowshare(struct lock *lk);
 void    lockdestroy(struct lock *lk);
 void    lockdisablerecurse(struct lock *lk);
+void    lockdisableshare(struct lock *lk);
 void    lockinit(struct lock *lk, int prio, const char *wmesg, int timo,
            int flags);
 #ifdef DDB

Modified: stable/10/sys/sys/vnode.h
==============================================================================
--- stable/10/sys/sys/vnode.h   Fri Sep  5 11:48:32 2014        (r271160)
+++ stable/10/sys/sys/vnode.h   Fri Sep  5 13:22:28 2014        (r271161)
@@ -428,6 +428,7 @@ extern      struct vattr va_null;           /* predefi
 
 #define        VN_LOCK_AREC(vp)        lockallowrecurse((vp)->v_vnlock)
 #define        VN_LOCK_ASHARE(vp)      lockallowshare((vp)->v_vnlock)
+#define        VN_LOCK_DSHARE(vp)      lockdisableshare((vp)->v_vnlock)
 
 #endif /* _KERNEL */
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to