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 2013/10/14 20:31:45 UTC
svn commit: r1532015 - in
/subversion/branches/log-addressing/subversion/libsvn_fs_fs: fs_fs.c
index.c transaction.c util.c util.h
Author: stefan2
Date: Mon Oct 14 18:31:45 2013
New Revision: 1532015
URL: http://svn.apache.org/r1532015
Log:
On the log-addressing branch: make the index file path calculation
require an explicit selection of packed / non-packed file path.
* subversion/libsvn_fs_fs/util.h
(svn_fs_fs__path_l2p_index,
svn_fs_fs__path_p2l_index): add PACKED flag to signature
* subversion/libsvn_fs_fs/util.c
(path_rev_absolute_internal): new utility function, mostly taken
from svn_fs_fs__path_rev_absolute
(svn_fs_fs__path_l2p_index,
svn_fs_fs__path_p2l_index,
svn_fs_fs__path_rev_absolute): re-implement using the new utility
* subversion/libsvn_fs_fs/index.c
(auto_open_l2p_index,
get_l2p_header_body,
get_l2p_page,
get_p2l_header,
get_p2l_page,
prefetch_p2l_page,
p2l_index_lookup): temp. change to provide the PACKED flag to
the changed API. Will ultimately provided
by the revision file struct
* subversion/libsvn_fs_fs/fs_fs.c
(write_revision_zero): update API callers
* subversion/libsvn_fs_fs/transaction.c
(commit_body): ditto
Modified:
subversion/branches/log-addressing/subversion/libsvn_fs_fs/fs_fs.c
subversion/branches/log-addressing/subversion/libsvn_fs_fs/index.c
subversion/branches/log-addressing/subversion/libsvn_fs_fs/transaction.c
subversion/branches/log-addressing/subversion/libsvn_fs_fs/util.c
subversion/branches/log-addressing/subversion/libsvn_fs_fs/util.h
Modified: subversion/branches/log-addressing/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/libsvn_fs_fs/fs_fs.c?rev=1532015&r1=1532014&r2=1532015&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/log-addressing/subversion/libsvn_fs_fs/fs_fs.c Mon Oct 14 18:31:45 2013
@@ -1119,7 +1119,7 @@ write_revision_zero(svn_fs_t *fs)
if (svn_fs_fs__use_log_addressing(fs, 0))
{
- const char *path = svn_fs_fs__path_l2p_index(fs, 0, fs->pool);
+ const char *path = svn_fs_fs__path_l2p_index(fs, 0, FALSE, fs->pool);
SVN_ERR(svn_io_file_create_binary
(path,
"\0\x80\x40" /* rev 0, 8k entries per page */
@@ -1130,7 +1130,7 @@ write_revision_zero(svn_fs_t *fs)
fs->pool));
SVN_ERR(svn_io_set_file_read_only(path, FALSE, fs->pool));
- path = svn_fs_fs__path_p2l_index(fs, 0, fs->pool);
+ path = svn_fs_fs__path_p2l_index(fs, 0, FALSE, fs->pool);
SVN_ERR(svn_io_file_create_binary
(path,
"\0\x6b" /* start rev, rev file size */
Modified: subversion/branches/log-addressing/subversion/libsvn_fs_fs/index.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/libsvn_fs_fs/index.c?rev=1532015&r1=1532014&r2=1532015&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/libsvn_fs_fs/index.c (original)
+++ subversion/branches/log-addressing/subversion/libsvn_fs_fs/index.c Mon Oct 14 18:31:45 2013
@@ -707,6 +707,7 @@ static svn_error_t *
auto_open_l2p_index(svn_fs_fs__packed_number_stream_t **stream,
svn_fs_t *fs,
svn_revnum_t revision,
+ svn_boolean_t packed,
apr_pool_t *pool)
{
if (*stream == NULL)
@@ -714,7 +715,7 @@ auto_open_l2p_index(svn_fs_fs__packed_nu
fs_fs_data_t *ffd = fs->fsap_data;
SVN_ERR(packed_stream_open(stream,
svn_fs_fs__path_l2p_index(fs, revision,
- pool),
+ packed, pool),
ffd->block_size,
pool));
}
@@ -745,7 +746,7 @@ get_l2p_header_body(l2p_header_t **heade
key.revision = base_revision(fs, revision);
key.second = svn_fs_fs__is_packed_rev(fs, revision);
- SVN_ERR(auto_open_l2p_index(stream, fs, revision, pool));
+ SVN_ERR(auto_open_l2p_index(stream, fs, revision, key.second, pool));
packed_stream_seek(*stream, 0);
/* read the table sizes */
@@ -1041,7 +1042,9 @@ get_l2p_page(l2p_page_t **page,
apr_uint64_t last_value = 0;
/* open index file and select page */
- SVN_ERR(auto_open_l2p_index(stream, fs, start_revision, pool));
+ SVN_ERR(auto_open_l2p_index(stream, fs, start_revision,
+ svn_fs_fs__is_packed_rev(fs, start_revision),
+ pool));
packed_stream_seek(*stream, table_entry->offset);
/* initialize the page content */
@@ -1722,7 +1725,7 @@ get_p2l_header(p2l_header_t **header,
if (*stream == NULL)
SVN_ERR(packed_stream_open(stream,
svn_fs_fs__path_p2l_index(fs, key.revision,
- pool),
+ key.second, pool),
ffd->block_size, stream_pool));
else
packed_stream_seek(*stream, 0);
@@ -1942,6 +1945,7 @@ get_p2l_page(apr_array_header_t **entrie
svn_fs_fs__packed_number_stream_t **stream,
svn_fs_t *fs,
svn_revnum_t start_revision,
+ svn_boolean_t packed,
apr_off_t start_offset,
apr_off_t next_offset,
apr_off_t page_start,
@@ -1962,7 +1966,7 @@ get_p2l_page(apr_array_header_t **entrie
if (*stream == NULL)
SVN_ERR(packed_stream_open(stream,
svn_fs_fs__path_p2l_index(fs, start_revision,
- pool),
+ packed, pool),
ffd->block_size, stream_pool));
packed_stream_seek(*stream, start_offset);
@@ -2060,6 +2064,7 @@ prefetch_p2l_page(svn_boolean_t *end,
SVN_ERR(get_p2l_page(&page, stream, fs,
baton->first_revision,
baton->start_offset,
+ key.is_packed,
baton->next_offset,
baton->page_start,
baton->page_size,
@@ -2178,6 +2183,7 @@ p2l_index_lookup(apr_array_header_t **en
SVN_ERR(get_p2l_page(entries, stream, fs,
page_info.first_revision,
page_info.start_offset,
+ key.is_packed,
page_info.next_offset,
page_info.page_start,
page_info.page_size, pool, pool));
Modified: subversion/branches/log-addressing/subversion/libsvn_fs_fs/transaction.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/libsvn_fs_fs/transaction.c?rev=1532015&r1=1532014&r2=1532015&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/libsvn_fs_fs/transaction.c (original)
+++ subversion/branches/log-addressing/subversion/libsvn_fs_fs/transaction.c Mon Oct 14 18:31:45 2013
@@ -3294,11 +3294,11 @@ commit_body(void *baton, apr_pool_t *poo
/* Convert the index files from the proto format into their form
in their final location */
SVN_ERR(svn_fs_fs__l2p_index_create(cb->fs,
- svn_fs_fs__path_l2p_index(cb->fs, new_rev, pool),
+ svn_fs_fs__path_l2p_index(cb->fs, new_rev, FALSE, pool),
svn_fs_fs__path_l2p_proto_index(cb->fs, txn_id, pool),
new_rev, pool));
SVN_ERR(svn_fs_fs__p2l_index_create(cb->fs,
- svn_fs_fs__path_p2l_index(cb->fs, new_rev, pool),
+ svn_fs_fs__path_p2l_index(cb->fs, new_rev, FALSE, pool),
svn_fs_fs__path_p2l_proto_index(cb->fs, txn_id, pool),
new_rev, pool));
}
Modified: subversion/branches/log-addressing/subversion/libsvn_fs_fs/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/libsvn_fs_fs/util.c?rev=1532015&r1=1532014&r2=1532015&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/libsvn_fs_fs/util.c (original)
+++ subversion/branches/log-addressing/subversion/libsvn_fs_fs/util.c Mon Oct 14 18:31:45 2013
@@ -131,22 +131,39 @@ svn_fs_fs__path_rev(svn_fs_t *fs, svn_re
apr_psprintf(pool, "%ld", rev), NULL);
}
+/* Set *PATH to the path of REV in FS with PACKED selecting whether the
+ (potential) pack file or single revision file name is returned.
+ Allocate *PATH in POOL.
+*/
+static const char *
+path_rev_absolute_internal(svn_fs_t *fs,
+ svn_revnum_t rev,
+ svn_boolean_t packed,
+ apr_pool_t *pool)
+{
+ return packed
+ ? svn_fs_fs__path_rev_packed(fs, rev, PATH_PACKED, pool)
+ : svn_fs_fs__path_rev(fs, rev, pool);
+}
+
const char *
svn_fs_fs__path_l2p_index(svn_fs_t *fs,
svn_revnum_t rev,
+ svn_boolean_t packed,
apr_pool_t *pool)
{
return apr_psprintf(pool, "%s" PATH_EXT_L2P_INDEX,
- svn_fs_fs__path_rev_absolute(fs, rev, pool));
+ path_rev_absolute_internal(fs, rev, packed, pool));
}
const char *
svn_fs_fs__path_p2l_index(svn_fs_t *fs,
svn_revnum_t rev,
+ svn_boolean_t packed,
apr_pool_t *pool)
{
return apr_psprintf(pool, "%s" PATH_EXT_P2L_INDEX,
- svn_fs_fs__path_rev_absolute(fs, rev, pool));
+ path_rev_absolute_internal(fs, rev, packed, pool));
}
const char *
@@ -155,11 +172,10 @@ svn_fs_fs__path_rev_absolute(svn_fs_t *f
apr_pool_t *pool)
{
fs_fs_data_t *ffd = fs->fsap_data;
+ svn_boolean_t is_packed = ffd->format >= SVN_FS_FS__MIN_PACKED_FORMAT
+ && svn_fs_fs__is_packed_rev(fs, rev);
- return ( ffd->format < SVN_FS_FS__MIN_PACKED_FORMAT
- || ! svn_fs_fs__is_packed_rev(fs, rev))
- ? svn_fs_fs__path_rev(fs, rev, pool)
- : svn_fs_fs__path_rev_packed(fs, rev, PATH_PACKED, pool);
+ return path_rev_absolute_internal(fs, rev, is_packed, pool);
}
const char *
Modified: subversion/branches/log-addressing/subversion/libsvn_fs_fs/util.h
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/libsvn_fs_fs/util.h?rev=1532015&r1=1532014&r2=1532015&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/libsvn_fs_fs/util.h (original)
+++ subversion/branches/log-addressing/subversion/libsvn_fs_fs/util.h Mon Oct 14 18:31:45 2013
@@ -175,6 +175,7 @@ svn_fs_fs__path_revprops(svn_fs_t *fs,
const char *
svn_fs_fs__path_l2p_index(svn_fs_t *fs,
svn_revnum_t rev,
+ svn_boolean_t packed,
apr_pool_t *pool);
/* Return the path of the file containing the phys-to-log index for the
@@ -183,6 +184,7 @@ svn_fs_fs__path_l2p_index(svn_fs_t *fs,
const char *
svn_fs_fs__path_p2l_index(svn_fs_t *fs,
svn_revnum_t rev,
+ svn_boolean_t packed,
apr_pool_t *pool);
/* Return the path of the file storing the oldest non-packed revision in FS.