Stefan2, I'm posting this attempt to add more detail to some of the FSFS caching doc strings. It's incomplete but I've had this sitting in my WC for a couple of weeks now and am unlikely to look deeper in the short term.
[[[ Index: subversion/libsvn_fs_fs/fs.h =================================================================== --- subversion/libsvn_fs_fs/fs.h (revision 1135952) +++ subversion/libsvn_fs_fs/fs.h (working copy) @@ -238,8 +238,12 @@ typedef struct fs_fs_data_t rep key to svn_string_t. */ svn_cache__t *fulltext_cache; - /* Pack manifest cache; maps revision numbers to offsets in their respective - pack files. */ + /* Pack manifest cache; a cache mapping (svn_revnum_t) shard number to + a manifest; and a manifest is a mapping from (svn_revnum_t) revision + number offset within a shard to (apr_off_t) byte-offset in the + respective pack file. + ### Is this right? + */ svn_cache__t *packed_offset_cache; /* Cache for txdelta_window_t objects; the key is (revFilePath, offset) */ Index: subversion/libsvn_fs_fs/temp_serializer.h =================================================================== --- subversion/libsvn_fs_fs/temp_serializer.h (revision 1135952) +++ subversion/libsvn_fs_fs/temp_serializer.h (working copy) @@ -93,8 +93,8 @@ svn_fs_fs__deserialize_txdelta_window(vo apr_pool_t *pool); /** - * Implements #svn_cache__serialize_func_t for manifests - * (#apr_array_header_t). + * Implements #svn_cache__serialize_func_t for a manifest + * (@a in is an #apr_array_header_t of apr_off_t elements). */ svn_error_t * svn_fs_fs__serialize_manifest(char **data, @@ -103,8 +103,8 @@ svn_fs_fs__serialize_manifest(char **dat apr_pool_t *pool); /** - * Implements #svn_cache__deserialize_func_t for manifests - * (#apr_array_header_t). + * Implements #svn_cache__deserialize_func_t for a manifest + * (@a *out is an #apr_array_header_t of apr_off_t elements). */ svn_error_t * svn_fs_fs__deserialize_manifest(void **out, @@ -167,8 +167,13 @@ svn_fs_fs__deserialize_dir_entries(void apr_pool_t *pool); /** - * Implements #svn_cache__partial_getter_func_t for a single element - * identified by its offset in @a baton within a serialized manifest array. + * Implements #svn_cache__partial_getter_func_t. + * Set @a *out to the (apr_off_t) byte-offset within a pack file of the + * revision + * Set (apr_off_t) @a *out to the element + * indexed by (apr_int64_t) @a *baton within the serialized manifest array + * @a data and @a data_len. + * ### Caller thinks *out is apr_off_t; impl thinks it is apr_int64_t. */ svn_error_t * svn_fs_fs__get_sharded_offset(void **out, @@ -180,7 +185,7 @@ svn_fs_fs__get_sharded_offset(void **out /** * Implements #svn_cache__partial_getter_func_t for a single * #svn_fs_dirent_t within a serialized directory contents hash, - * identified by its name in @a baton. + * identified by its name (const char @a *baton). */ svn_error_t * svn_fs_fs__extract_dir_entry(void **out, ]]] - Julian