From owner-freebsd-arch@freebsd.org Fri Feb 5 20:22:06 2016 Return-Path: Delivered-To: freebsd-arch@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EA5A0A77AD7 for ; Fri, 5 Feb 2016 20:22:06 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id D9031100F for ; Fri, 5 Feb 2016 20:22:06 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: by mailman.ysv.freebsd.org (Postfix) id D88DFA77AD6; Fri, 5 Feb 2016 20:22:06 +0000 (UTC) Delivered-To: arch@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D73D6A77AD5 for ; Fri, 5 Feb 2016 20:22:06 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B4D27100E for ; Fri, 5 Feb 2016 20:22:06 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (c-73-231-226-104.hsd1.ca.comcast.net [73.231.226.104]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id BDC6EB948; Fri, 5 Feb 2016 15:22:05 -0500 (EST) From: John Baldwin To: Jilles Tjoelker Cc: arch@freebsd.org Subject: Re: Refactoring asynchronous I/O Date: Fri, 05 Feb 2016 12:21:52 -0800 Message-ID: <9227739.EqUaAQ57pU@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.2-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <20160131230214.GA37435@stack.nl> References: <2793494.0Z1kBV82mT@ralph.baldwin.cx> <20160131230214.GA37435@stack.nl> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Fri, 05 Feb 2016 15:22:05 -0500 (EST) X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Feb 2016 20:22:07 -0000 On Monday, February 01, 2016 12:02:14 AM Jilles Tjoelker wrote: > On Tue, Jan 26, 2016 at 05:39:03PM -0800, John Baldwin wrote: > > Note that binding the AIO support to a new fileop does mean that the AIO code > > now becomes mandatory (rather than optional). We could perhaps make the > > system calls continue to be optional if people really need that, but the guts > > of the code will now need to always be in the kernel. > > Enabling this by default is OK with me as long as the easy ways to get a > stuck process are at least disabled by default. Currently, a process > gets stuck forever if it has an AIO request from or to a pipe that will > never complete. An AIO daemon should not be allowed to perform an > unbounded sleep such as for a pipe (NFS server should be OK). One thing I could do is split vfs_aio.c into two files: kern_aio.c that holds the "library" such as aio_aqueue() / aio_complete(), etc. and a sys_aio.c that is just the system calls. kern_aio.c would be standard, but sys_aio.c could still be optional and aio.ko would contain it. This would still make AIO optional, though aio.ko would be fairly small, so not having it probably wouldn't save much in terms of size. Does this seem reasonable or is a trivial aio.ko not worth it? -- John Baldwin