svn commit: r193953 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs

Kip Macy kmacy at FreeBSD.org
Wed Jun 10 21:05:38 UTC 2009


Author: kmacy
Date: Wed Jun 10 21:05:37 2009
New Revision: 193953
URL: http://svn.freebsd.org/changeset/base/193953

Log:
  use default policy for enabling prefetching unless the TUNABLE is set

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Wed Jun 10 21:03:57 2009	(r193952)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Wed Jun 10 21:05:37 2009	(r193953)
@@ -158,7 +158,6 @@ static int		arc_grow_retry = 60;
  */
 static int		arc_min_prefetch_lifespan;
 
-extern int zfs_prefetch_disable;
 extern int zfs_prefetch_enable;
 static int arc_dead;
 
@@ -3423,6 +3422,8 @@ arc_lowmem(void *arg __unused, int howto
 void
 arc_init(void)
 {
+	int prefetch_tunable_set = 0;
+	
 	mutex_init(&arc_reclaim_thr_lock, NULL, MUTEX_DEFAULT, NULL);
 	cv_init(&arc_reclaim_thr_cv, NULL, CV_DEFAULT, NULL);
 	mutex_init(&arc_lowmem_lock, NULL, MUTEX_DEFAULT, NULL);
@@ -3551,19 +3552,23 @@ arc_init(void)
 	mutex_init(&zfs_write_limit_lock, NULL, MUTEX_DEFAULT, NULL);
 
 #ifdef _KERNEL
+	if (TUNABLE_INT_FETCH("vfs.zfs.prefetch_enable", &zfs_prefetch_enable))
+		prefetch_tunable_set = 1;
+	
 #ifdef __i386__
-	if (zfs_prefetch_enable != 1) {
+	if (prefetch_tunable_set == 0) {
 		printf("ZFS NOTICE: prefetch is disabled by default on i386"
 		    " - add enable to tunable to change.\n" );
-		zfs_prefetch_disable=1;
+		zfs_prefetch_enable=0;
 	}
-#endif	
+#else	
 	if ((((uint64_t)physmem * PAGESIZE) < (1ULL << 32)) &&
-	    (zfs_prefetch_enable != 1) && (zfs_prefetch_disable != 1)) {
+	    prefetch_tunable_set == 0) {
 		printf("ZFS NOTICE: system has less than 4GB and prefetch enable is not set"
 		    "... disabling.\n");
-		zfs_prefetch_disable=1;
+		zfs_prefetch_enable=0;
 	}
+#endif	
 	/* Warn about ZFS memory and address space requirements. */
 	if (((uint64_t)physmem * PAGESIZE) < (256 + 128 + 64) * (1 << 20)) {
 		printf("ZFS WARNING: Recommended minimum RAM size is 512MB; "

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c	Wed Jun 10 21:03:57 2009	(r193952)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c	Wed Jun 10 21:05:37 2009	(r193953)
@@ -37,8 +37,7 @@
  * until we can get this working the way we want it to.
  */
 
-int zfs_prefetch_disable = 0;
-int zfs_prefetch_enable = 0;
+int zfs_prefetch_enable = 1;
 
 /* max # of streams per zfetch */
 uint32_t	zfetch_max_streams = 8;
@@ -50,10 +49,6 @@ uint32_t	zfetch_block_cap = 256;
 uint64_t	zfetch_array_rd_sz = 1024 * 1024;
 
 SYSCTL_DECL(_vfs_zfs);
-TUNABLE_INT("vfs.zfs.prefetch_disable", &zfs_prefetch_disable);
-SYSCTL_INT(_vfs_zfs, OID_AUTO, prefetch_disable, CTLFLAG_RDTUN,
-    &zfs_prefetch_disable, 0, "Disable prefetch");
-TUNABLE_INT("vfs.zfs.prefetch_enable", &zfs_prefetch_enable);
 SYSCTL_INT(_vfs_zfs, OID_AUTO, prefetch_enable, CTLFLAG_RDTUN,
     &zfs_prefetch_enable, 0, "Enable prefetch for systems with less than 4GB");
 SYSCTL_NODE(_vfs_zfs, OID_AUTO, zfetch, CTLFLAG_RW, 0, "ZFS ZFETCH");


More information about the svn-src-head mailing list