svn commit: r312795 - stable/11/sys/fs/tmpfs

Konstantin Belousov kib at FreeBSD.org
Thu Jan 26 10:15:42 UTC 2017


Author: kib
Date: Thu Jan 26 10:15:41 2017
New Revision: 312795
URL: https://svnweb.freebsd.org/changeset/base/312795

Log:
  MFC r311531 (by mjg):
  Perform a lockless check in tmpfs_itimes.

Modified:
  stable/11/sys/fs/tmpfs/tmpfs_subr.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/fs/tmpfs/tmpfs_subr.c
==============================================================================
--- stable/11/sys/fs/tmpfs/tmpfs_subr.c	Thu Jan 26 09:46:34 2017	(r312794)
+++ stable/11/sys/fs/tmpfs/tmpfs_subr.c	Thu Jan 26 10:15:41 2017	(r312795)
@@ -1743,19 +1743,22 @@ tmpfs_set_status(struct tmpfs_node *node
 }
 
 /* Sync timestamps */
-static void
-tmpfs_itimes_locked(struct tmpfs_node *node, const struct timespec *acc,
+void
+tmpfs_itimes(struct vnode *vp, const struct timespec *acc,
     const struct timespec *mod)
 {
+	struct tmpfs_node *node;
 	struct timespec now;
 
-	TMPFS_ASSERT_LOCKED(node);
+	ASSERT_VOP_LOCKED(vp, "tmpfs_itimes");
+	node = VP_TO_TMPFS_NODE(vp);
 
 	if ((node->tn_status & (TMPFS_NODE_ACCESSED | TMPFS_NODE_MODIFIED |
 	    TMPFS_NODE_CHANGED)) == 0)
 		return;
 
 	vfs_timestamp(&now);
+	TMPFS_NODE_LOCK(node);
 	if (node->tn_status & TMPFS_NODE_ACCESSED) {
 		if (acc == NULL)
 			 acc = &now;
@@ -1770,19 +1773,6 @@ tmpfs_itimes_locked(struct tmpfs_node *n
 		node->tn_ctime = now;
 	node->tn_status &= ~(TMPFS_NODE_ACCESSED | TMPFS_NODE_MODIFIED |
 	    TMPFS_NODE_CHANGED);
-}
-
-void
-tmpfs_itimes(struct vnode *vp, const struct timespec *acc,
-    const struct timespec *mod)
-{
-	struct tmpfs_node *node;
-
-	ASSERT_VOP_LOCKED(vp, "tmpfs_itimes");
-	node = VP_TO_TMPFS_NODE(vp);
-
-	TMPFS_NODE_LOCK(node);
-	tmpfs_itimes_locked(node, acc, mod);
 	TMPFS_NODE_UNLOCK(node);
 
 	/* XXX: FIX? The entropy here is desirable, but the harvesting may be expensive */


More information about the svn-src-all mailing list