Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Aug 2010 17:48:22 +0000 (UTC)
From:      Andriy Gapon <avg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r211762 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <201008241748.o7OHmM46083357@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: avg
Date: Tue Aug 24 17:48:22 2010
New Revision: 211762
URL: http://svn.freebsd.org/changeset/base/211762

Log:
  zfs arc_reclaim_thread: no need to call arc_reclaim_needed when
  resetting needfree
  
  needfree is checked at the very start of arc_reclaim_needed.
  This change makes code easier to follow and maintain in face of
  potential changed in arc_reclaim_needed.
  
  Also, put the whole sub-block under _KERNEL because needfree can be set
  only in kernel code.
  
  To do: rename needfree to something else to aovid confusion with
  OpenSolaris global variable of the same name which is used in the same
  code, but has different meaning (page deficit).
  
  Note: I have an impression that locking around accesses to this variable
  as well as mutual notifications between arc_reclaim_thread and
  arc_lowmem are not proper.
  
  MFC after:	1 week

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

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Aug 24 17:47:52 2010	(r211761)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Aug 24 17:48:22 2010	(r211762)
@@ -2317,12 +2317,12 @@ arc_reclaim_thread(void *dummy __unused)
 		if (arc_eviction_list != NULL)
 			arc_do_user_evicts();
 
-		if (arc_reclaim_needed()) {
-			needfree = 0;
 #ifdef _KERNEL
+		if (needfree) {
+			needfree = 0;
 			wakeup(&needfree);
-#endif
 		}
+#endif
 
 		/* block until needed, or one second, whichever is shorter */
 		CALLB_CPR_SAFE_BEGIN(&cpr);



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