Date: Fri, 27 May 2016 16:10:05 -0500 From: Alan Cox <alc@rice.edu> To: Konstantin Belousov <kostikbel@gmail.com>, Ivan Klymenko <fidaj@ukr.net> Cc: Alan Cox <alc@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r300865 - in head/sys: sys vm Message-ID: <333b4ffe-cfc5-a67a-051d-9fb98f3418e7@rice.edu> In-Reply-To: <20160527210148.GR38613@kib.kiev.ua> References: <201605271915.u4RJFkEl013139@repo.freebsd.org> <20160527225103.67ae3547@nonamehost.local> <20160527210148.GR38613@kib.kiev.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
On 05/27/2016 16:01, Konstantin Belousov wrote: > 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@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.=20 >>> 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 >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D >>> --- 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 @@ >>> */ >>> =20 >>> 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; >>> =20 >>> /* >>> * Swap out requests >>> _______________________________________________ >>> 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-unsubscribe@freebsd.org= " >> ... >> =3D=3D=3D> 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 ? arc.c doesn't appear to use anything defined by vm_pageout.h. What I'm more surprised by is that "bool" is defined when compiling the kernel module but not when compiling the user-space library.=20 > 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> > =20 > +#ifdef _KERNEL > #include <vm/vm_pageout.h> > +#endif > #include <machine/vmparam.h> > =20 > #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 > =20 > /* > * Programming rules. >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?333b4ffe-cfc5-a67a-051d-9fb98f3418e7>