- changed 5 files
In FSFS, complete the chunked read support for changed paths lists.This patch does two things. Instead of full changes lists, it caches onlyblocks of up to 100 entires - possibly more than one per revision. Secondly,it needs to be able to seek to specific blocks of changes if they should notbe found in the cache. So, we need to remember their offsets within theon-disk representation.This ports r1744987 and r1744991 from FSX to FSFS. Properties anddirectories are now the only data structures left with unbound memoryusage.* subversion/libsvn_fs_x/fs.h (SVN_FS_FS__CHANGES_BLOCK_SIZE): New define. (svn_fs_fs__data_t.changes_cache): Update docstring. (svn_fs_fs__changes_context): Add the NEXT_OFFSET element, so we know where to read from disk when we need to fall back to that.* subversion/libsvn_fs_fs/temp_serializer.h (svn_fs_fs__changes_list_t): New data structure that decorated the plain APR array of changes with per-block info such as relative position on disk etc. (svn_fs_fs__serialize_changes, svn_fs_fs__deserialize_changes): Update docstrings as we expect the changes list to be of the above type now.* subversion/libsvn_fs_x/temp_serializer.c (changes_data_t): Superseeded by svn_fs_fs__changes_list_t. (svn_fs_fs__serialize_changes, svn_fs_fs__deserialize_changes): Update. The new data type is similar to the one used before internally.* subversion/libsvn_fs_fs/caching.c (svn_fs_fs__initialize_caches): Changed paths lists are now keyed by rev,block pairs.* subversion/libsvn_fs_fs/cached_data.c (svn_fs_fs__get_changes): Fetch only the next block of list entries from cache, or read the next block from disk and cache it, respectively. Be sure to provide all relative location info we may need to restart the parser for this or the next block. (block_read_changes): Provide the additional information now required per entries block. Cache only lists that fit into a single entries block. Update docstring.