It seems directory cache checked twice in function svn_fs_fs__rep_contents_dir_entry: [[[ svn_error_t * svn_fs_fs__rep_contents_dir_entry(svn_fs_dirent_t **dirent, svn_fs_t *fs, node_revision_t *noderev, const char *name, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_boolean_t found = FALSE;
/* find the cache we may use */ pair_cache_key_t pair_key = { 0 }; const void *key; svn_cache__t *cache = locate_dir_cache(fs, &key, &pair_key, noderev, scratch_pool); if (cache) { [...] SVN_ERR(svn_cache__get_partial((void **)dirent, &found, cache, key, svn_fs_fs__extract_dir_entry, &baton, result_pool)); } /* fetch data from disk if we did not find it in the cache */ if (! found) { [...] /* read the dir from the file system. It will probably be put it into the cache for faster lookup in future calls. */ SVN_ERR(svn_fs_fs__rep_contents_dir(&entries, fs, noderev, scratch_pool, scratch_pool)); [...] } return SVN_NO_ERROR; } ]]] And svn_fs_fs__rep_contents_dir() functions checks the dir cache again. Is my analysis correct or I missed something important? -- Ivan Zhakov