From owner-freebsd-stable@FreeBSD.ORG Fri Oct 29 15:23:00 2010 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1FC691065670 for ; Fri, 29 Oct 2010 15:23:00 +0000 (UTC) (envelope-from avg@icyb.net.ua) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 6708E8FC14 for ; Fri, 29 Oct 2010 15:22:59 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id SAA07518; Fri, 29 Oct 2010 18:22:55 +0300 (EEST) (envelope-from avg@icyb.net.ua) Message-ID: <4CCAE6CE.9020509@icyb.net.ua> Date: Fri, 29 Oct 2010 18:22:54 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.11) Gecko/20101021 Lightning/1.0b2 Thunderbird/3.1.5 MIME-Version: 1.0 To: Kostik Belousov References: <4CCACDC0.7050802@icyb.net.ua> <1BDB4D1B02274CC8AA2DD5E68190CB5D@vosz.local> <20101029145349.GX2392@deviant.kiev.zoral.com.ua> <4CCAE2B6.1050906@icyb.net.ua> <20101029151727.GY2392@deviant.kiev.zoral.com.ua> In-Reply-To: <20101029151727.GY2392@deviant.kiev.zoral.com.ua> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=KOI8-U Content-Transfer-Encoding: 7bit Cc: freebsd-stable@freebsd.org, Alexander Zagrebin Subject: Re: 8.1-STABLE: zfs and sendfile: problem still exists X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Oct 2010 15:23:00 -0000 on 29/10/2010 18:17 Kostik Belousov said the following: > On Fri, Oct 29, 2010 at 06:05:26PM +0300, Andriy Gapon wrote: >> on 29/10/2010 17:53 Kostik Belousov said the following: >>> Could it be the priming of the vm object pages content ? >> >> Sorry, not familiar with this term. >> Do you mean prepopulation of vm object with valid pages? >> >>> Due to double-buffering, and (possibly false) optimization to only >> >> What optimization? > On zfs vnode read, the page from the corresponding vm object is only > populated with the vnode data if the page already exists in the > object. Do you mean a specific type of read? For "normal" reads it's the other way around - if the page already exists and is valid, then we read from the page, not from ARC. > Not doing the optimization would be to allocate the page uncoditionally > on the read if not already present, and copy the data from ARC to the page. >> >>> perform double-buffering when vm object already has some data cached, >>> reads can prime vm object page list before file is mmapped or >>> sendfile-ed. >>> >> >> No double-buffering is done to optimize anything. Double-buffering >> is a consequence of having page cache and ARC. The special >> "double-buffering code" is to just handle that fact - e.g. making >> sure that VOP_READ reads data from page cache instead of ARC if it's >> possible that the data in them differs (i.e. page cache has more >> recent data). >> >> So, if I understood the term 'priming' correctly, no priming should >> ever occur. > The priming is done on the first call to VOP_READ() with the right > offset after the page is allocated. Again, what is priming? -- Andriy Gapon