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.