Skip site navigation (1)Skip section navigation (2)
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>