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/06/23 21:20:23 UTC
svn commit: r1604911 - in /subversion/trunk/subversion/libsvn_fs_fs:
cached_data.c low_level.c low_level.h pack.c recovery.c transaction.c
Author: stsp
Date: Mon Jun 23 19:20:23 2014
New Revision: 1604911
URL: http://svn.apache.org/r1604911
Log:
Switch svn_fs_fs__read_rep_header() to the dual-pool idiom.
* subversion/libsvn_fs_fs/cached_data.c
(create_rep_state_body, read_rep_header): Pass a scratch pool.
* subversion/libsvn_fs_fs/low_level.c
(svn_fs_fs__read_rep_header): Switch to dual-pool. Use scratch pool
for temporary allocations.
* subversion/libsvn_fs_fs/low_level.h
(svn_fs_fs__read_rep_header): Tweak declaration and docstring.
* subversion/libsvn_fs_fs/pack.c
(copy_rep_to_temp): Pass standard pool as scratch pool.
* subversion/libsvn_fs_fs/recovery.c
(recover_find_max_ids): Pass standard pool as scratch pool.
* subversion/libsvn_fs_fs/transaction.c
(upgrade_transaction): Pass an iterpool as scratch pool.
Modified:
subversion/trunk/subversion/libsvn_fs_fs/cached_data.c
subversion/trunk/subversion/libsvn_fs_fs/low_level.c
subversion/trunk/subversion/libsvn_fs_fs/low_level.h
subversion/trunk/subversion/libsvn_fs_fs/pack.c
subversion/trunk/subversion/libsvn_fs_fs/recovery.c
subversion/trunk/subversion/libsvn_fs_fs/transaction.c
Modified: subversion/trunk/subversion/libsvn_fs_fs/cached_data.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/cached_data.c?rev=1604911&r1=1604910&r2=1604911&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/cached_data.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/cached_data.c Mon Jun 23 19:20:23 2014
@@ -831,7 +831,7 @@ create_rep_state_body(rep_state_t **rep_
}
SVN_ERR(svn_fs_fs__read_rep_header(&rh, rs->sfile->rfile->stream,
- result_pool));
+ result_pool, scratch_pool));
SVN_ERR(get_file_offset(&rs->start, rs, result_pool));
/* populate the cache if appropriate */
@@ -2994,7 +2994,8 @@ read_rep_header(svn_fs_fs__rep_header_t
return SVN_NO_ERROR;
}
- SVN_ERR(svn_fs_fs__read_rep_header(rep_header, stream, result_pool));
+ SVN_ERR(svn_fs_fs__read_rep_header(rep_header, stream, result_pool,
+ scratch_pool));
if (ffd->rep_header_cache)
SVN_ERR(svn_cache__set(ffd->rep_header_cache, key, *rep_header,
Modified: subversion/trunk/subversion/libsvn_fs_fs/low_level.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/low_level.c?rev=1604911&r1=1604910&r2=1604911&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/low_level.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/low_level.c Mon Jun 23 19:20:23 2014
@@ -1036,16 +1036,17 @@ svn_fs_fs__write_noderev(svn_stream_t *o
svn_error_t *
svn_fs_fs__read_rep_header(svn_fs_fs__rep_header_t **header,
svn_stream_t *stream,
- apr_pool_t *pool)
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
svn_stringbuf_t *buffer;
char *str, *last_str;
apr_int64_t val;
svn_boolean_t eol = FALSE;
- SVN_ERR(svn_stream_readline(stream, &buffer, "\n", &eol, pool));
+ SVN_ERR(svn_stream_readline(stream, &buffer, "\n", &eol, scratch_pool));
- *header = apr_pcalloc(pool, sizeof(**header));
+ *header = apr_pcalloc(result_pool, sizeof(**header));
(*header)->header_size = buffer->len + 1;
if (strcmp(buffer->data, REP_PLAIN) == 0)
{
Modified: subversion/trunk/subversion/libsvn_fs_fs/low_level.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/low_level.h?rev=1604911&r1=1604910&r2=1604911&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/low_level.h (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/low_level.h Mon Jun 23 19:20:23 2014
@@ -195,12 +195,13 @@ typedef struct svn_fs_fs__rep_header_t
} svn_fs_fs__rep_header_t;
/* Read the next line from STREAM and parse it as a text
- representation header. Return the parsed entry in *HEADER.
- Perform all allocations in POOL. */
+ representation header. Return the parsed entry in *HEADER, allocated
+ in RESULT_POOL. Perform temporary allocations in SCRATCH_POOL. */
svn_error_t *
svn_fs_fs__read_rep_header(svn_fs_fs__rep_header_t **header,
svn_stream_t *stream,
- apr_pool_t *pool);
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
/* Write the representation HEADER to STREAM. Use POOL for allocations. */
svn_error_t *
Modified: subversion/trunk/subversion/libsvn_fs_fs/pack.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/pack.c?rev=1604911&r1=1604910&r2=1604911&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/pack.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/pack.c Mon Jun 23 19:20:23 2014
@@ -573,7 +573,7 @@ copy_rep_to_temp(pack_context_t *context
/* read & parse the representation header */
stream = svn_stream_from_aprfile2(rev_file, TRUE, pool);
- SVN_ERR(svn_fs_fs__read_rep_header(&rep_header, stream, pool));
+ SVN_ERR(svn_fs_fs__read_rep_header(&rep_header, stream, pool, pool));
svn_stream_close(stream);
/* if the representation is a delta against some other rep, link the two */
Modified: subversion/trunk/subversion/libsvn_fs_fs/recovery.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/recovery.c?rev=1604911&r1=1604910&r2=1604911&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/recovery.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/recovery.c Mon Jun 23 19:20:23 2014
@@ -184,7 +184,7 @@ recover_find_max_ids(svn_fs_t *fs,
SVN_ERR(svn_fs_fs__item_offset(&offset, fs, rev_file, rev, NULL,
noderev->data_rep->item_index, pool));
SVN_ERR(svn_io_file_seek(rev_file->file, APR_SET, &offset, pool));
- SVN_ERR(svn_fs_fs__read_rep_header(&header, baton.stream, pool));
+ SVN_ERR(svn_fs_fs__read_rep_header(&header, baton.stream, pool, pool));
if (header->type != svn_fs_fs__rep_plain)
return svn_error_create(SVN_ERR_FS_CORRUPT, NULL,
_("Recovery encountered a deltified directory "
Modified: subversion/trunk/subversion/libsvn_fs_fs/transaction.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/transaction.c?rev=1604911&r1=1604910&r2=1604911&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/transaction.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/transaction.c Mon Jun 23 19:20:23 2014
@@ -3447,7 +3447,7 @@ upgrade_transaction(svn_fs_t *fs,
iterpool));
SVN_ERR(svn_fs_fs__read_rep_header(&header,
svn_stream_from_aprfile2(proto_file, TRUE, iterpool),
- iterpool));
+ iterpool, iterpool));
/* Create the corresponding entry for the P2L proto-index.