Author: kib
Date: Thu Sep  8 12:05:13 2016
New Revision: 305594
URL: https://svnweb.freebsd.org/changeset/base/305594

Log:
  In softdep_prealloc(), return early not only for snapshots, but for
  the quota files as well.
  
  Reported and tested by:       pho
  Reviewed by:  mckusick
  Sponsored by: The FreeBSD Foundation
  MFC after:    2 weeks

Modified:
  head/sys/ufs/ffs/ffs_softdep.c

Modified: head/sys/ufs/ffs/ffs_softdep.c
==============================================================================
--- head/sys/ufs/ffs/ffs_softdep.c      Thu Sep  8 12:04:45 2016        
(r305593)
+++ head/sys/ufs/ffs/ffs_softdep.c      Thu Sep  8 12:05:13 2016        
(r305594)
@@ -2997,10 +2997,13 @@ softdep_prealloc(vp, waitok)
            ("softdep_prealloc called on non-softdep filesystem"));
        /*
         * Nothing to do if we are not running journaled soft updates.
-        * If we currently hold the snapshot lock, we must avoid handling
-        * other resources that could cause deadlock.
+        * If we currently hold the snapshot lock, we must avoid
+        * handling other resources that could cause deadlock.  Do not
+        * touch quotas vnode since it is typically recursed with
+        * other vnode locks held.
         */
-       if (DOINGSUJ(vp) == 0 || IS_SNAPSHOT(VTOI(vp)))
+       if (DOINGSUJ(vp) == 0 || IS_SNAPSHOT(VTOI(vp)) ||
+           (vp->v_vflag & VV_SYSTEM) != 0)
                return (0);
        ump = VFSTOUFS(vp->v_mount);
        ACQUIRE_LOCK(ump);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to