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 | darwin-kernel@lists.apple.com Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/darwin-kernel Do not post admin requests to the list. They will be ignored.
participants (1)
-
Quinn