From owner-freebsd-current@FreeBSD.ORG Tue Jan 24 02:35:05 2006 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5927F16A41F; Tue, 24 Jan 2006 02:35:05 +0000 (GMT) (envelope-from julian@elischer.org) Received: from a50.ironport.com (a50.ironport.com [63.251.108.112]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0FF0443D48; Tue, 24 Jan 2006 02:35:04 +0000 (GMT) (envelope-from julian@elischer.org) Received: from unknown (HELO [10.251.23.146]) ([10.251.23.146]) by a50.ironport.com with ESMTP; 23 Jan 2006 18:35:04 -0800 X-IronPort-Anti-Spam-Filtered: true Message-ID: <43D59258.1060705@elischer.org> Date: Mon, 23 Jan 2006 18:35:04 -0800 From: Julian Elischer User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.11) Gecko/20050727 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Peter Jeremy References: <43D05151.5070409@elischer.org> <200601231616.49140.jhb@freebsd.org> <43D55739.80608@elischer.org> <20060123224756.R48094@fledge.watson.org> <43D56468.1060101@elischer.org> <20060123232836.M48094@fledge.watson.org> <43D56E79.60504@elischer.org> <20060124011243.GT25397@cirb503493.alcatel.com.au> In-Reply-To: <20060124011243.GT25397@cirb503493.alcatel.com.au> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-current@freebsd.org, Robert Watson Subject: Re: kernel thread as real threads.. X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jan 2006 02:35:05 -0000 Peter Jeremy wrote: >On Mon, 2006-Jan-23 16:02:01 -0800, Julian Elischer wrote: > > >>>And any others I don't remember. We may find we need to perform an >>>aio drain wait there if we switch to doing AIO in the process context. >>> >>> >>I don't think so.. >>IO is really 2 stage: >> >>for read, data is read into the cache by standard async kernel code. >>then the thread wakes up and writes it to the user space. >>if the thread has died the async request is still allowed to complete. >> >> > >Is this done as a one-off event, or will data be copied from kernel >to userland as the data arrives in the kernel? The former implies >that the userland buffer is (pretty much) atomically updated - it is >unchanged until all the available data arrives, at which point it is >all copied into userland and the aio flagged as complete. The latter >implies that parts of the userland buffer will update gradually. The >difference primarily affects large requests (and the latter approach >implies that less kernel resources will be tied up by the I/O). > > I sugest reading the code.. I don't know the answer.. But I'm interested to hear the answer. I believe it's done in (largeish) chunks but I may be wrong. :-) >What about the write case? > > I believe it's symetrical with read., In either case. If the requestor is not around at completion of the physical IO it is not much of a problem.