From owner-freebsd-stable@FreeBSD.ORG Wed Sep 3 12:49:37 2008 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 98DCE106567D; Wed, 3 Sep 2008 12:49:37 +0000 (UTC) (envelope-from is@rambler-co.ru) Received: from relay0.rambler.ru (relay0.rambler.ru [81.19.66.187]) by mx1.freebsd.org (Postfix) with ESMTP id 4A9AC8FC16; Wed, 3 Sep 2008 12:49:37 +0000 (UTC) (envelope-from is@rambler-co.ru) Received: from localhost (is1.park.rambler.ru [81.19.64.121]) by relay0.rambler.ru (Postfix) with ESMTP id 258A25C43; Wed, 3 Sep 2008 16:49:36 +0400 (MSD) Date: Wed, 3 Sep 2008 16:47:33 +0400 From: Igor Sysoev To: Kostik Belousov Message-ID: <20080903124733.GH62541@rambler-co.ru> References: <20080903095352.GA62541@rambler-co.ru> <20080903123955.GE2038@deviant.kiev.zoral.com.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline In-Reply-To: <20080903123955.GE2038@deviant.kiev.zoral.com.ua> User-Agent: Mutt/1.5.13 (2006-08-11) Cc: Tor Egge , freebsd-stable@freebsd.org Subject: Re: vfs.ffs.rawreadahead 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: Wed, 03 Sep 2008 12:49:37 -0000 On Wed, Sep 03, 2008 at 03:39:55PM +0300, Kostik Belousov wrote: > On Wed, Sep 03, 2008 at 01:53:52PM +0400, Igor Sysoev wrote: > > Hi, > > > > could anyone tell what does vfs.ffs.rawreadahead enable ? > > As I understand it's used in DIRECTIO code that allows read data > > directly to an userland buffer bypassing the buffer cache. > > What I can not understand where the read ahead data can be placed in ? > > The operation of the ffs_rawread is more accurately described as > bypassing the page cache. It creates the physical buffer that maps > the user pages. > > The readahead is performed only when the supplied user memory region > is bigger then blocksize. In this case, two reads are performed > simultaneously, with both buffers mapping consequent blocks from > user-supplied buffers. The read operation looks like footsteps. Nice! As I understand the size limit of one read operation is MAXPHYS, which is equal to 128K due to LBA28 ATA limit. On SCSI, SATA, and LBA48 ATA this limit can be increased. Is it safe ? -- Igor Sysoev http://sysoev.ru/en/