From owner-freebsd-current@FreeBSD.ORG Sat May 22 15:54:23 2004 Return-Path: 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 383FB16A4CF for ; Sat, 22 May 2004 15:54:23 -0700 (PDT) Received: from afields.ca (afields.ca [216.194.67.132]) by mx1.FreeBSD.org (Postfix) with ESMTP id EE34B43D1F for ; Sat, 22 May 2004 15:54:22 -0700 (PDT) (envelope-from afields@afields.ca) Received: from afields.ca (localhost.afields.ca [127.0.0.1]) by afields.ca (8.12.6/8.12.9) with ESMTP id i4MMs5Sd025315; Sat, 22 May 2004 18:54:05 -0400 (EDT) (envelope-from afields@afields.ca) Received: (from afields@localhost) by afields.ca (8.12.6/8.12.9/Submit) id i4MMs4Zp025314; Sat, 22 May 2004 18:54:04 -0400 (EDT) (envelope-from afields) Date: Sat, 22 May 2004 18:54:04 -0400 From: Allan Fields To: Brooks Davis Message-ID: <20040522225404.GA23275@afields.ca> References: <20040520191910.GB28688@Odin.AC.HMC.Edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040520191910.GB28688@Odin.AC.HMC.Edu> User-Agent: Mutt/1.4i X-Mailman-Approved-At: Sun, 23 May 2004 04:46:21 -0700 cc: Jesse Guardiani cc: freebsd-current@freebsd.org Subject: Re: GEOM portable filesystem abstraction? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 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: Sat, 22 May 2004 22:54:23 -0000 On Thu, May 20, 2004 at 12:19:12PM -0700, Brooks Davis wrote: > On Thu, May 20, 2004 at 02:44:06PM -0400, Jesse Guardiani wrote: > > > > It seems like GEOM functions as a bit of a disk > > abstraction layer in FreeBSD. Would it be possible > > to port the GEOM subsystem as a loadable kernel > > module to Linux (and perhaps other OSes) to > > facilitate pluggable, portable filesystem code? It's interesting to note the similarities in the approaches GEOM and vnode stacking take: Both can act to transform data before reaching disk; both are modular "object oriented" interfaces which can be manipulated at system runtime; both aim to implement DAGs and allow free interconnection of components, building up sophisticated behaviour. There are implementations of disk encryption and replication schemes at both levels, etc. > > I'm constantly frustrated by the fact that Linux and > > BSD are OPEN SOURCE OSes, but they *still* can't > > write each other's file systems any better than they > > can write the reverse engineered NTFS filesystem. Good point, I'd think most file system developers have their hands full developing for a single platform, but cross-platform function is a desirable goal. The fact that file system code is complex and closely integrates with other sections of the kernel impedes portability. But I'd rather have a high performance filesystem on a single platform if portability meant a significant hit in performance. > FWIW, fist does provide a set of portable semantics and if you wrote a > real file system on it, it should work on FreeBSD, Linux, and Solaris. However, larger cross-platform compatibility isn't yet a reality with current fistgen templates. It will take more work (though the potential is real and with-in reach): * Some issues remain w/ FreeBSD templates, but mostly they work under FreeBSD 4 & 5 with some minor tweaks to compensate for incremental changes to the vnode interface. * Even on the Linux side, various kernels are better supported than others at this point in time. To the best of my knowledge there are no Darwin, NetBSD or OpenBSD templates; porting to Windows raises a host of issues. > http://www.cs.columbia.edu/~ezk/research/fist/ | http://www.filesystems.org/ > > Currently, fist is used to implement stacking layers, but I imagine > you could write a full-fledged files system in it, possibly after > extending it a bit. I'm not actually sure though. This is still an open question as to whether it's practical and others had mentioned the possibility.. What FiST does provide is the top-half of the solution: I'd be interested to hear if anyone manages to build a full filesystem using the framework provided to attach custom filesystem code which implements it's own "back-end". Unfortunately, much of the desired portability might be sacrificed in such an exercise as you then are going past the common vnode interfaces and implementing routines that have to cooperate with other parts of the kernel. FiST allows arbitrary code to be hooked into vnop calls, but usually these are auxiliary functions: for example, used in transforming data before passing to the lower-vnode, etc. Generalization of FiST beyond stackable file systems is an interesting idea, perhaps one that should be followed up on the FiST mailing list. Abstracting out all the complexities of file systems would be a tough challenge, perhaps it's easier to just encourage more file system ports. > -- Brooks BTW, nice clustering paper (just read it earlier today). Any idea about state of FreeBSD Condor support and specifically any tid-bits on kernel support for transparent process checkpointing? I assume you've been using application-level checkpoints for process migration. Thanks.. -- Allan Fields Afields Research/AFRSL - http://afields.ca BSDCan: May 2004, Ottawa - http://www.bsdcan.org 2D4F 6806 D307 0889 6125 C31D F745 0D72 39B4 5541