Re: cluster_read()
Re: cluster_read()
- Subject: Re: cluster_read()
- From: Quinn <email@hidden>
- Date: Tue, 2 Dec 2003 12:21:52 +0000
At 21:57 +1000 2/12/03, Chris Bergmann wrote:
Or if you still think that filters are the way
to go then by all means say so and i'll go play with them instead :-)
Definitely not, given that you're already knee deep in BSD code already.
The cluster_xxx calls are the fast path interface to Mac OS X's
unified buffer cache (UBC). They allow a file system to easily
support vop_read/write/pagein/pageout for data that should be cached
(typically the contents of files). These routines eventually call
back into the file system's vop_cmap routine to map file offsets to
disk offsets, and vop_strategy routine to actually kick off the I/O.
A file system can also do I/O via the more common buffer I/O routines
(bread/brelse/bwrite). [You can learn about these in the "The Design
and Implementation of the 4.4 BSD Operating System" book, which is
required reading for anyone working on the BSD portitions of our
kernel.] AFAIK, a UBC-aware file system only ever uses meta_bread,
which is used to read/write meta data (that is, catalogue data, as
opposed to file data). The buffer I/O routines also eventually do
the I/O via the file system's vop_strategy routine.
Any snapshot implementation will need to take both data and meta data
writes into account.
It might be education for you to get the 10.2 xnu/bsd source and
compare it to the 10.2.3 xnu/bsd source. 10.2.3 contains our first
cut at journalling. While our journalling implementation only
journals meta data, it would be very educational to look at the
changes we made to support it. [I must do this myself one day.
Would that I had unbounded amounts of time available.]
S+E
--
Quinn "The Eskimo!" <
http://www.apple.com/developer/>
Apple Developer Technical Support * Networking, Communications, Hardware
_______________________________________________
darwin-kernel mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/darwin-kernel
Do not post admin requests to the list. They will be ignored.