Date: Wed, 28 Feb 2001 16:18:37 +0900 From: "Akinori MUSHA" <knu@iDaemons.org> To: Matt Dillon <dillon@FreeBSD.org>, sanpei@FreeBSD.org Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/i386/linux linux_machdep.c Message-ID: <86u25fxoky.wl@archon.local.idaemons.org> In-Reply-To: <200102280430.f1S4UST14589@freefall.freebsd.org> References: <200102280430.f1S4UST14589@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
At Tue, 27 Feb 2001 20:30:28 -0800 (PST), dillon wrote: > dillon 2001/02/27 20:30:28 PST > > Modified files: > sys/i386/linux linux_machdep.c > Log: > Linux does not filesystem-sync file-backed writable mmap pages on > a regular basis. Adjust our linux emulation to conform. This will > cause more dirty pages to be left for the pagedaemon to deal with, > but our new low-memory handling code can deal with it. The linux > way appears to be a trend, and we may very well make MAP_NOSYNC the > default for FreeBSD as well (once we have reasonable sequential > write-behind heuristics for random faults). > (will be MFC'd prior to 4.3 freeze) > > Suggested by: Andrew Gallatin How does it compare to the attached patch which came up in the FreeBSD-users-jp mailing list in Japan some time ago? It gives users an option to switch the behavior via sysctl(8), and does <<bsd_args.flags |= MAP_NOSYNC;>> in a different place. The patch was originally posted by sanpei@FreeBSD.org, and is mentioned in Hints.FreeBSD of the vmware2 port, FYI. -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "We're only at home when we're on the run, on the wing, on the fly" --- sys/i386/linux/linux_machdep.c 2001/02/16 16:40:43 1.12 +++ sys/i386/linux/linux_machdep.c 2001/02/27 15:37:29 @@ -31,6 +31,7 @@ #include <sys/param.h> #include <sys/mman.h> #include <sys/proc.h> +#include <sys/sysctl.h> #include <sys/sysproto.h> #include <sys/systm.h> #include <sys/unistd.h> @@ -288,6 +289,11 @@ int pos; }; +static int mmap_nosync; +SYSCTL_DECL(_compat_linux); +SYSCTL_INT(_compat_linux, OID_AUTO, mmap_nosync, CTLFLAG_RW, + &mmap_nosync, 0, "mmap files with MAP_NOSYNC flag in Linux mode."); + #define STACK_SIZE (2 * 1024 * 1024) #define GUARD_SIZE (4 * PAGE_SIZE) @@ -395,8 +401,11 @@ bsd_args.prot = linux_args.prot | PROT_READ; /* always required */ if (linux_args.flags & LINUX_MAP_ANON) bsd_args.fd = -1; - else + else { bsd_args.fd = linux_args.fd; + if (mmap_nosync) + bsd_args.flags |= MAP_NOSYNC; + } bsd_args.pos = linux_args.pos; bsd_args.pad = 0; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86u25fxoky.wl>