You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2014/09/07 01:05:49 UTC
svn commit: r1622963 - in /subversion/trunk/subversion/libsvn_fs_fs: fs_fs.c
index.c
Author: stefan2
Date: Sat Sep 6 23:05:49 2014
New Revision: 1622963
URL: http://svn.apache.org/r1622963
Log:
Restrict the FSFS L2P index page size to powers of two. That's easier
to verify and consistent with all the other settings we have.
* subversion/libsvn_fs_fs/fs_fs.c
(write_config): Update and clean up fsfs.conf docstring.
* subversion/libsvn_fs_fs/index.c
(get_l2p_header_body): Verify that the L2P page size is 2^N.
Modified:
subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
subversion/trunk/subversion/libsvn_fs_fs/index.c
Modified: subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c?rev=1622963&r1=1622962&r2=1622963&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c Sat Sep 6 23:05:49 2014
@@ -949,19 +949,14 @@ write_config(svn_fs_t *fs,
"# " CONFIG_OPTION_BLOCK_SIZE " = 64" NL
"###" NL
"### The log-to-phys index maps data item numbers to offsets within the" NL
-"### rev or pack file. A revision typically contains 2 .. 5 such items" NL
-"### per changed path. For each revision, at least one page is being" NL
-"### allocated in the l2p index with unused parts resulting in no wasted" NL
-"### space." NL
-"### Changing this parameter only affects larger revisions with thousands" NL
-"### of changed paths. A smaller value means that more pages need to be" NL
-"### allocated for such revisions, increasing the size of the page table" NL
-"### meaning it takes longer to read that table (once). Access to each" NL
-"### page is then faster because less data has to read. So, if you have" NL
-"### several extremely large revisions (approaching 1 mio changes), think" NL
+"### rev or pack file. This index is organized in pages of a fixed maximum" NL
+"### capacity. To access an item, the page table and the respective page" NL
+"### must be read." NL
+"### This parameter only affects revisions with thousands of changed paths." NL
+"### If you have several extremely large revisions (~1 mio changes), think" NL
"### about increasing this setting. Reducing the value will rarely result" NL
"### in a net speedup." NL
-"### This is an expert setting. Any non-zero value is possible." NL
+"### This is an expert setting. Must be a power of 2." NL
"### l2p-page-size is 8192 entries by default." NL
"# " CONFIG_OPTION_L2P_PAGE_SIZE " = 8192" NL
"###" NL
Modified: subversion/trunk/subversion/libsvn_fs_fs/index.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/index.c?rev=1622963&r1=1622962&r2=1622963&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/index.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/index.c Sat Sep 6 23:05:49 2014
@@ -776,9 +776,9 @@ get_l2p_header_body(l2p_header_t **heade
SVN_ERR(packed_stream_get(&value, rev_file->l2p_stream));
result->page_size = (apr_uint32_t)value;
- if (!result->page_size)
+ if (!result->page_size || (result->page_size & (result->page_size - 1)))
return svn_error_create(SVN_ERR_FS_ITEM_INDEX_CORRUPTION, NULL,
- _("L2P page size must not be 0"));
+ _("L2P index page size is not a power of two"));
SVN_ERR(packed_stream_get(&value, rev_file->l2p_stream));
result->revision_count = (int)value;