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 <mahr...@delphix.com>
  Reviewed by: Prakash Surya <prakash.su...@delphix.com>
  Reviewed by: Josef 'Jeff' Sipek <jef...@josefsipek.net>
  Reviewed by: Robert Mustacchi <r...@joyent.com>
  Approved by: Dan McDonald <dan...@omniti.com>
  Author: Eli Rosenthal <eli.rosent...@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);
                }
        }
_______________________________________________
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