From owner-freebsd-fs@FreeBSD.ORG Thu Feb 15 10:16:06 2007 Return-Path: X-Original-To: freebsd-fs@freebsd.org Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D089516A406 for ; Thu, 15 Feb 2007 10:16:06 +0000 (UTC) (envelope-from tol@pdc.kth.se) Received: from mx2.kth.se (mx2.kth.se [130.237.48.98]) by mx1.freebsd.org (Postfix) with ESMTP id 5EEE513C4B9 for ; Thu, 15 Feb 2007 10:16:03 +0000 (UTC) (envelope-from tol@pdc.kth.se) Received: from localhost (localhost.localdomain [127.0.0.1]) by mx2.kth.se (Postfix) with ESMTP id A24BD140554; Thu, 15 Feb 2007 11:16:02 +0100 (CET) Received: from mx2.kth.se ([127.0.0.1]) by localhost (mx2.kth.se [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 16277-03-17; Thu, 15 Feb 2007 11:16:00 +0100 (CET) Received: from kashyyyk.ite.kth.se (kashyyyk.ite.kth.se [130.237.31.35]) by mx2.kth.se (Postfix) with ESMTP id 6807F140584; Thu, 15 Feb 2007 11:16:00 +0100 (CET) Received: by kashyyyk.ite.kth.se (Postfix, from userid 18404) id 58CF189CA62; Thu, 15 Feb 2007 11:16:00 +0100 (CET) Sender: tol@kashyyyk.ite.kth.se From: Tomas Olsson To: Kostik Belousov References: <6FC9F9894A9F8C49A722CF9F2132FC2204C9DAB5@ms05.mailstreet2003.net> <6FC9F9894A9F8C49A722CF9F2132FC2204C9DAB6@ms05.mailstreet2003.net> <45D1F30A.6080403@freebsd.org> <20070213192906.U726@chrishome.localnet> <20070214162938.GA96725@keira.kiwi-computer.com> <20070214173211.L1054@chrishome.localnet> <20070214170808.GC96725@keira.kiwi-computer.com> <20070215044707.GA39168@deviant.kiev.zoral.com.ua> Date: 15 Feb 2007 11:16:00 +0100 In-Reply-To: <20070215044707.GA39168@deviant.kiev.zoral.com.ua> Message-ID: Lines: 47 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Virus-Scanned: by amavisd-new at kth.se Cc: freebsd-fs@freebsd.org, "Rick C. Petty" , arla-drinkers@stacken.kth.se Subject: Arla on FreeBSD X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Feb 2007 10:16:06 -0000 Kostik Belousov writes: > > I'm already funded and can work full time on this, but a FreeBSD hacker > > would help a lot. Any volunteers? > > Sorry for me pointing out obvious, why not continue to use fs@ as place > where to ask ? > You're very right, I'm just to shy to do it... Thanks. Anyway; Arla is built around a "small" caching fs driver (nnpfs) servicing user requests by asking the 'arlad' daemon for help or just operating on local files created/fetched by arlad. They communicate over a char device. A simple read would be handled as such: getnode/getdata rpc to arlad installnode/installdata + wakeup msgs from arlad VOP_READ() on newly fetched cache file Subsequent reads on the same data would skip the rpc part, unless arlad has invalidated the node. Previously, there was a 1:1 mapping between nnpfs vnode and cache file. The installdata message was then handled by fetching the cache file's vnode (in arlad's context), storing it in the nnpfs_node for future reference/access. Now we ended up with one cache file per "block" (large) of data, and decided that it would be better to open/access/close the cache "block" file on each access. The closest we could get to the olden ways was to open the directory where a node's cache blocks reside, in arlad's context. The interesting part is how we open and access the cache files, and from what context. arlad is in chroot() to avoid recursive lookups across /, and it seems like a good idea to avoid such lookups now too. So the main question is how to properly do VOP_{LOOKUP,CREATE,WRITE} etc on cache files in this dual context world, without mixing identities in bad ways or confusing the OS too much. The currently messed up code lives in http://cvsweb.stacken.kth.se/cvsweb.cgi/arla/nnpfs/bsd/ Most interesting is nnpfs_vnodeops-common.c (nnpfs_write_common()) and nnpfs_blocks.c (open_file()) thanks /t