svn commit: r300865 - in head/sys: sys vm

Konstantin Belousov kostikbel at gmail.com
Fri May 27 21:01:55 UTC 2016


On Fri, May 27, 2016 at 10:51:03PM +0300, Ivan Klymenko wrote:
> On Fri, 27 May 2016 19:15:46 +0000 (UTC)
> Alan Cox <alc at FreeBSD.org> wrote:
> 
> > Author: alc
> > Date: Fri May 27 19:15:45 2016
> > New Revision: 300865
> > URL: https://svnweb.freebsd.org/changeset/base/300865
> > 
> > Log:
> >   The flag "vm_pages_needed" has long served two distinct purposes:
> > (1) to indicate that threads are waiting for free pages to become
> > available and (2) to indicate whether a wakeup call has been sent to
> > the page daemon. The trouble is that a single flag cannot really
> > serve both purposes, because we have two distinct targets for when to
> > wakeup threads waiting for free pages versus when the page daemon has
> > completed its work.  In particular, the flag will be cleared by
> > vm_page_free() before the page daemon has met its target, and this
> > can lead to the OOM killer being invoked prematurely. To address this
> > problem, a new flag "vm_pageout_wanted" is introduced. 
> >   Discussed with:	jeff
> >   Reviewed by:	kib, markj
> >   Tested by:	markj
> >   Sponsored by:	EMC / Isilon Storage Division
> > 
> > Modified:
> >   head/sys/sys/vmmeter.h
> >   head/sys/vm/vm_page.c
> >   head/sys/vm/vm_pageout.c
> >   head/sys/vm/vm_pageout.h
> > 
> > Modified: head/sys/vm/vm_pageout.h
> > ==============================================================================
> > --- head/sys/vm/vm_pageout.h	Fri May 27 18:52:58 2016
> > (r300864) +++ head/sys/vm/vm_pageout.h	Fri May 27 19:15:45
> > 2016	(r300865) @@ -72,9 +72,10 @@
> >   */
> >  
> >  extern int vm_page_max_wired;
> > -extern int vm_pages_needed;	/* should be some "event"
> > structure */ extern int vm_pageout_deficit;
> >  extern int vm_pageout_page_count;
> > +extern bool vm_pageout_wanted;
> > +extern bool vm_pages_needed;
> >  
> >  /*
> >   * Swap out requests
> > _______________________________________________
> > svn-src-all at freebsd.org mailing list
> > https://lists.freebsd.org/mailman/listinfo/svn-src-all
> > To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
> 
> ...
> ===> lib/libalias/modules/smedia (obj)
> --- cddl/lib__L ---
> In file included
> from /usr/src/cddl/lib/libzpool/../../../sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:143: /media/da0s1/obj/usr/src/tmp/usr/include/vm/vm_pageout.h:77:8:
> error: unknown type name 'bool' extern bool vm_pageout_wanted;
>        ^
> /media/da0s1/obj/usr/src/tmp/usr/include/vm/vm_pageout.h:78:8: error:
> unknown type name 'bool' extern bool vm_pages_needed;
>        ^
> 2 errors generated.
> *** [arc.So] Error code 1

Does it compile if you just remove the
#include <vm/vm_pageout.h>
line from arc.c and possibly zfs_vnops.c ?

If not, try bracing the line with #ifdef _KERNEL, like this:

diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
index c1a254a..74193d1 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
@@ -140,7 +140,9 @@
 #include <zfs_fletcher.h>
 #include <sys/sdt.h>
 
+#ifdef _KERNEL
 #include <vm/vm_pageout.h>
+#endif
 #include <machine/vmparam.h>
 
 #ifdef illumos
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
index 6b25d39..c39e6a0 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
@@ -75,7 +75,9 @@
 #include <sys/sched.h>
 #include <sys/acl.h>
 #include <vm/vm_param.h>
+#ifdef _KERNEL
 #include <vm/vm_pageout.h>
+#endif
 
 /*
  * Programming rules.


More information about the svn-src-head mailing list