Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Jan 1999 19:55:58 -0800
From:      Don Lewis <Don.Lewis@tsc.tdk.com>
To:        Terry Lambert <tlambert@primenet.com>, dillon@apollo.backplane.com (Matthew Dillon)
Cc:        dyson@iquest.net, freebsd-hackers@FreeBSD.ORG
Subject:   Re: questions/problems with vm_fault() in Stable
Message-ID:  <199901080355.TAA05878@salsa.gv.tsc.tdk.com>
In-Reply-To: Terry Lambert <tlambert@primenet.com> "Re: questions/problems with vm_fault() in Stable" (Jan  8,  2:48am)

next in thread | previous in thread | raw e-mail | index | archive | help
On Jan 8,  2:48am, Terry Lambert wrote:
} Subject: Re: questions/problems with vm_fault() in Stable

} The second is a more intersting posit.
} 
} Consider the case of where I stack 500 NULL stacking layers on
} top of a mount point.  If each layer transition required a vnode
} translation, this would take a very long time.

Heidemann's paper also talks about featherweight layers ...

} How does collapsing work?
} 
} Collapsing does *not* work, as implied in the discussion by Matt,
} a rune-time short circuit.
} 
} Collapsing is intended to occur at FS mount time.
} 
} When an FS is mounted, for every VOP in the descriptor array
} defined in the structure in (incorrectly compile-time generated)
} vnode_if.c, a VOP descriptor reference is instanced.  [Note: if
} these descriptors are sorted, as well, then we can get rid of
} two ponter dereferences and a lot of reformatting glue code, as
} well, and reference by array offset instead of descriptor pointer
} reverse lookup].
} 
} For VOP's defined by a VFS, the descriptor is taken from the per
} VFS array of descriptors.
} 
} For VOP's that *aren't* defined by a VFS, the descriptor is taken
} from the underlying VFS upon which it is stacked, and so on, until
} it gets to the bottom, where the VOP's that are substituted return
} a "not implemented" error.

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

} 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?

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901080355.TAA05878>