Author: mckusick
Date: Thu Dec  6 01:04:56 2018
New Revision: 341611
URL: https://svnweb.freebsd.org/changeset/base/341611

Log:
  If the vfs.ffs.dotrimcons sysctl option is enabled while a file
  deletion is active, specifically after a call to ffs_blkrelease_start()
  but before the call to ffs_blkrelease_finish(), ffs_blkrelease_start()
  will have handed out SINGLETON_KEY rather than starting a collection
  sequence. Thus if we get a SINGLETON_KEY passed to ffs_blkrelease_finish(),
  we just return rather than trying to finish the nonexistent sequence.
  
  Reported by:  Warner Losh (imp@)
  Sponsored by: Netflix

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

Modified: head/sys/ufs/ffs/ffs_alloc.c
==============================================================================
--- head/sys/ufs/ffs/ffs_alloc.c        Thu Dec  6 00:13:51 2018        
(r341610)
+++ head/sys/ufs/ffs/ffs_alloc.c        Thu Dec  6 01:04:56 2018        
(r341611)
@@ -2537,6 +2537,23 @@ ffs_blkrelease_finish(ump, key)
        if (((ump->um_flags & UM_CANDELETE) == 0) || dotrimcons == 0)
                return;
        /*
+        * If the vfs.ffs.dotrimcons sysctl option is enabled while
+        * a file deletion is active, specifically after a call
+        * to ffs_blkrelease_start() but before the call to
+        * ffs_blkrelease_finish(), ffs_blkrelease_start() will
+        * have handed out SINGLETON_KEY rather than starting a
+        * collection sequence. Thus if we get a SINGLETON_KEY
+        * passed to ffs_blkrelease_finish(), we just return rather
+        * than trying to finish the nonexistent sequence.
+        */
+       if (key == SINGLETON_KEY) {
+#ifdef INVARIANTS
+               printf("%s: vfs.ffs.dotrimcons enabled on active filesystem\n",
+                   ump->um_mountp->mnt_stat.f_mntonname);
+#endif
+               return;
+       }
+       /*
         * We are done with sending blocks using this key. Look up the key
         * using the DONE alloctype (in tp) to request that it be unhashed
         * as we will not be adding to it. If the key has never been used,
_______________________________________________
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