From owner-freebsd-arch@freebsd.org Wed Jan 27 17:52:34 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 D6877A70218 for ; Wed, 27 Jan 2016 17:52:34 +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 C5B361183 for ; Wed, 27 Jan 2016 17:52:34 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: by mailman.ysv.freebsd.org (Postfix) id C4AD9A70217; Wed, 27 Jan 2016 17:52:34 +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 C445FA70216 for ; Wed, 27 Jan 2016 17:52:34 +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 A61841182 for ; Wed, 27 Jan 2016 17:52:34 +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 C375DB93C; Wed, 27 Jan 2016 12:52:32 -0500 (EST) From: John Baldwin To: Slawa Olhovchenkov Cc: arch@freebsd.org Subject: Re: Refactoring asynchronous I/O Date: Wed, 27 Jan 2016 09:52:12 -0800 Message-ID: <1723457.HAUy43H1XN@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.2-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <20160127105205.GP37895@zxy.spb.ru> References: <2793494.0Z1kBV82mT@ralph.baldwin.cx> <20160127105205.GP37895@zxy.spb.ru> 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); Wed, 27 Jan 2016 12:52:32 -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: Wed, 27 Jan 2016 17:52:34 -0000 On Wednesday, January 27, 2016 01:52:05 PM Slawa Olhovchenkov wrote: > On Tue, Jan 26, 2016 at 05:39:03PM -0800, John Baldwin wrote: > > > The original motivation for my changes is to support efficient zero-copy > > receive for TOE using Chelsio T4/T5 adapters. However, read() is ill > > I undertuns that not you work, but: what about (teoretical) async > open/close/unlink/etc? Implementing more asynchronous operations is orthogonal to this. It would perhaps be a bit simpler to implement these in the new model since most of the logic would live in a vnode-specific aio_queue method in vfs_vnops.c. However, the current AIO approach is to add a new system call for each async system call (e.g. aio_open()). You would then create an internal LIO opcode (e.g. LIO_OPEN). The vnode aio hook would then have to support LIO_OPEN requests and return the opened fd via aio_complete(). Async stat / open might be nice for network filesystems in particular. I've known of programs forking separate threads just to do open/fstat of NFS files to achieve the equivalent of aio_open() / aio_stat(). -- John Baldwin