From owner-freebsd-hackers Fri Jan 8 12:01:08 1999 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id MAA16838 for freebsd-hackers-outgoing; Fri, 8 Jan 1999 12:01:08 -0800 (PST) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from smtp01.primenet.com (smtp01.primenet.com [206.165.6.131]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id MAA16827 for ; Fri, 8 Jan 1999 12:01:06 -0800 (PST) (envelope-from tlambert@usr09.primenet.com) Received: (from daemon@localhost) by smtp01.primenet.com (8.8.8/8.8.8) id NAA11450; Fri, 8 Jan 1999 13:00:31 -0700 (MST) Received: from usr09.primenet.com(206.165.6.209) via SMTP by smtp01.primenet.com, id smtpd011304; Fri Jan 8 13:00:11 1999 Received: (from tlambert@localhost) by usr09.primenet.com (8.8.5/8.8.5) id NAA23516; Fri, 8 Jan 1999 13:00:04 -0700 (MST) From: Terry Lambert Message-Id: <199901082000.NAA23516@usr09.primenet.com> Subject: Re: questions/problems with vm_fault() in Stable To: Don.Lewis@tsc.tdk.com (Don Lewis) Date: Fri, 8 Jan 1999 20:00:04 +0000 (GMT) Cc: tlambert@primenet.com, dillon@apollo.backplane.com, dyson@iquest.net, freebsd-hackers@FreeBSD.ORG In-Reply-To: <199901080355.TAA05878@salsa.gv.tsc.tdk.com> from "Don Lewis" at Jan 7, 99 07:55:58 pm X-Mailer: ELM [version 2.4 PL25] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG > What if there is more than one underlying filesystem? > > mount a FFS filesystem on /a > mount an NFS filesystem on /a/b > NULLFS mount /a on /n > > For a VOP not defined for NULLFS, you want to use the FFS VOP for > /n/c and the NFS VOP for /n/a/b/c Mountpoint traversal isn't really a problem. The bigger problem is with multiplexing (like union) and de-muxing (like a nullfs exposure of a subdir). I think these layers are synchronization points. > } What does this mean for a stack of 500 NULLFS instances? > } > } What it means is that for most VOPs (all VOPs, if the VFS architecture > } wasn't currently screwed up by null_bypass and some ill-considered > } direct references to NULLVPTOLOWERVP), the VOP's inhereit from the > } bottom-most VFS! > } > } It *also* means that the overhead in figuring this out occurs at > } the time the VFS is instanced, *not* at runtime. > > What happens if /a/b is mounted after /a is mounted on /n? Mount point traversal is applied before semantic layer traversal. A layer stacked on something that have a covered vnode applies to the covering vnode. Consider a stacking layer that puts an "x" in front of every file name. If you mount: mount FFS on /a mount NFS on /a/b "xing-FS" mount /a on /n and each of the first two FS's has a file named "fred" in it, then you see: /a/fred /a/b/fred /n/xfred /n/b/xfred (/or /n/xb/xfred, if directories are files 8-)) If, instead, you mount: mount FFS on /a "xing-FS" mount /a on /n mount NFS on /n/b then you see: /a/fred no /a/b/fred /n/xfred /n/b/fred Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message