Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Mar 2016 00:22:56 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r297116 - in stable/10/sys/cddl: compat/opensolaris/sys contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <201603210022.u2L0MuEo038468@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Mon Mar 21 00:22:55 2016
New Revision: 297116
URL: https://svnweb.freebsd.org/changeset/base/297116

Log:
  MFC r296530: MFV r296529:
  6672 arc_reclaim_thread() should use gethrtime() instead of ddi_get_lbolt()
  6673 want a macro to convert seconds to nanoseconds and vice-versa
  
  Reviewed by: Matthew Ahrens <mahrens@delphix.com>
  Reviewed by: Prakash Surya <prakash.surya@delphix.com>
  Reviewed by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
  Reviewed by: Robert Mustacchi <rm@joyent.com>
  Approved by: Dan McDonald <danmcd@omniti.com>
  Author: Eli Rosenthal <eli.rosenthal@delphix.com>
  
  illumos/illumos-gate@a8f6344fa0921599e1f4511e41b5f9a25c38c0f9

Modified:
  stable/10/sys/cddl/compat/opensolaris/sys/time.h
  stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/cddl/compat/opensolaris/sys/time.h
==============================================================================
--- stable/10/sys/cddl/compat/opensolaris/sys/time.h	Mon Mar 21 00:22:09 2016	(r297115)
+++ stable/10/sys/cddl/compat/opensolaris/sys/time.h	Mon Mar 21 00:22:55 2016	(r297116)
@@ -40,6 +40,9 @@
 #define	MSEC2NSEC(m)	((hrtime_t)(m) * (NANOSEC / MILLISEC))
 #define	NSEC2MSEC(n)	((n) / (NANOSEC / MILLISEC))
 
+#define	NSEC2SEC(n)	((n) / (NANOSEC / SEC))
+#define	SEC2NSEC(m)	((hrtime_t)(m) * (NANOSEC / SEC))
+
 typedef longlong_t	hrtime_t;
 
 #if defined(__i386__) || defined(__powerpc__)

Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
==============================================================================
--- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Mon Mar 21 00:22:09 2016	(r297115)
+++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Mon Mar 21 00:22:55 2016	(r297116)
@@ -3609,7 +3609,7 @@ arc_kmem_reap_now(void)
 static void
 arc_reclaim_thread(void *dummy __unused)
 {
-	clock_t			growtime = 0;
+	hrtime_t		growtime = 0;
 	callb_cpr_t		cpr;
 
 	CALLB_CPR_INIT(&cpr, &arc_reclaim_lock, callb_generic_cpr, FTAG);
@@ -3630,7 +3630,7 @@ arc_reclaim_thread(void *dummy __unused)
 			 * Wait at least zfs_grow_retry (default 60) seconds
 			 * before considering growing.
 			 */
-			growtime = ddi_get_lbolt() + (arc_grow_retry * hz);
+			growtime = gethrtime() + SEC2NSEC(arc_grow_retry);
 
 			arc_kmem_reap_now();
 
@@ -3650,7 +3650,7 @@ arc_reclaim_thread(void *dummy __unused)
 			}
 		} else if (free_memory < arc_c >> arc_no_grow_shift) {
 			arc_no_grow = B_TRUE;
-		} else if (ddi_get_lbolt() >= growtime) {
+		} else if (gethrtime() >= growtime) {
 			arc_no_grow = B_FALSE;
 		}
 
@@ -3684,8 +3684,8 @@ arc_reclaim_thread(void *dummy __unused)
 			 * even if we aren't being signalled)
 			 */
 			CALLB_CPR_SAFE_BEGIN(&cpr);
-			(void) cv_timedwait(&arc_reclaim_thread_cv,
-			    &arc_reclaim_lock, hz);
+			(void) cv_timedwait_hires(&arc_reclaim_thread_cv,
+			    &arc_reclaim_lock, SEC2NSEC(1), MSEC2NSEC(1), 0);
 			CALLB_CPR_SAFE_END(&cpr, &arc_reclaim_lock);
 		}
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201603210022.u2L0MuEo038468>