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/05/20 17:59:45 UTC

svn commit: r1596299 - /subversion/trunk/subversion/libsvn_fs_fs/pack.c

Author: stefan2
Date: Tue May 20 15:59:45 2014
New Revision: 1596299

URL: http://svn.apache.org/r1596299
Log:
Backport some packing code cleanup from FSX to FSFS.  None of it should
change the behavior.

* subversion/libsvn_fs_fs/pack.c
  (): Mention that we use separate regions for directories and files.
  (initialize_pack_context): Formatting fixes only.
  (close_pack_context): Use SVN_VA_NULL instead of plain NULL in variable
                        parameter lists.
  (sort_reps,
   sort_items,
   write_l2p_index): Use svn_sort__array instead of qsort for APR arrays.

Modified:
    subversion/trunk/subversion/libsvn_fs_fs/pack.c

Modified: subversion/trunk/subversion/libsvn_fs_fs/pack.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/pack.c?rev=1596299&r1=1596298&r2=1596299&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/pack.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/pack.c Tue May 20 15:59:45 2014
@@ -74,8 +74,9 @@
  * - changed paths lists
  * - node property
  * - directory properties
- * - noderevs and representations, lexical path order with special
- *   treatment of "trunk" and "branches"
+ * - directory representations corresponding noderevs, lexical path order
+ *   with special treatment of "trunk" and "branches"
+ * - same for file representations
  *
  * Step 4 copies the items from the temporary buckets into the final
  * pack file and writes the temporary index files.
@@ -258,7 +259,7 @@ initialize_pack_context(pack_context_t *
   
   SVN_ERR_ASSERT(ffd->format >= SVN_FS_FS__MIN_LOG_ADDRESSING_FORMAT);
   SVN_ERR_ASSERT(shard_rev % ffd->max_files_per_dir == 0);
-  
+
   /* where we will place our various temp files */
   SVN_ERR(svn_io_temp_dir(&temp_dir, pool));
 
@@ -314,7 +315,7 @@ initialize_pack_context(pack_context_t *
   context->path_order = apr_array_make(pool, max_items,
                                        sizeof(path_order_t *));
   context->references = apr_array_make(pool, max_items,
-                                           sizeof(reference_t *));
+                                       sizeof(reference_t *));
   context->reps = apr_array_make(pool, max_items,
                                  sizeof(svn_fs_fs__p2l_entry_t *));
   SVN_ERR(svn_io_open_unique_file3(&context->reps_file, NULL, temp_dir,
@@ -360,9 +361,11 @@ close_pack_context(pack_context_t *conte
                    apr_pool_t *pool)
 {
   const char *l2p_index_path
-    = apr_pstrcat(pool, context->pack_file_path, PATH_EXT_L2P_INDEX, NULL);
+    = apr_pstrcat(pool, context->pack_file_path, PATH_EXT_L2P_INDEX,
+                  SVN_VA_NULL);
   const char *p2l_index_path
-    = apr_pstrcat(pool, context->pack_file_path, PATH_EXT_P2L_INDEX, NULL);
+    = apr_pstrcat(pool, context->pack_file_path, PATH_EXT_P2L_INDEX,
+                  SVN_VA_NULL);
   const char *proto_l2p_index_path;
   const char *proto_p2l_index_path;
 
@@ -985,12 +988,10 @@ sort_reps(pack_context_t *context)
 
   /* Sort containers by path and IDs, respectively.
    */
-  qsort(context->path_order->elts, context->path_order->nelts,
-        context->path_order->elt_size,
-        (int (*)(const void *, const void *))compare_path_order);
-  qsort(context->references->elts, context->references->nelts,
-        context->references->elt_size,
-        (int (*)(const void *, const void *))compare_references);
+  svn_sort__array(context->path_order,
+                  (int (*)(const void *, const void *))compare_path_order);
+  svn_sort__array(context->references,
+                  (int (*)(const void *, const void *))compare_references);
 
   /* Directories are already in front; sort directories section and files
    * section separately but use the same heuristics (see sub-function).
@@ -1035,8 +1036,8 @@ compare_p2l_info(const svn_fs_fs__p2l_en
 static void
 sort_items(apr_array_header_t *entries)
 {
-  qsort(entries->elts, entries->nelts, entries->elt_size,
-        (int (*)(const void *, const void *))compare_p2l_info);
+  svn_sort__array(entries,
+                  (int (*)(const void *, const void *))compare_p2l_info);
 }
 
 /* Return the remaining unused bytes in the current block in CONTEXT's
@@ -1241,8 +1242,8 @@ write_l2p_index(pack_context_t *context,
   context->reps->nelts = dest;
 
   /* we need to write the l2p index revision by revision */
-  qsort(context->reps->elts, context->reps->nelts, sizeof(void*),
-        (int (*)(const void *, const void *))compare_p2l_info_rev);
+  svn_sort__array(context->reps,
+                  (int (*)(const void *, const void *))compare_p2l_info_rev);
 
   /* write index entries */
   for (i = 0; i < context->reps->nelts; ++i)