You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2015/12/11 11:39:44 UTC
svn commit: r1719336 - /subversion/trunk/subversion/libsvn_fs_fs/pack.c
Author: ivan
Date: Fri Dec 11 10:39:43 2015
New Revision: 1719336
URL: http://svn.apache.org/viewvc?rev=1719336&view=rev
Log:
* subversion/libsvn_fs_fs/pack.c
(append_revision): Obtain file size from handle after opening revision file
instead of calling stat() to obtain file size by name.
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=1719336&r1=1719335&r2=1719336&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/pack.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/pack.c Fri Dec 11 10:39:43 2015
@@ -1438,21 +1438,17 @@ append_revision(pack_context_t *context,
apr_off_t offset = 0;
apr_pool_t *iterpool = svn_pool_create(pool);
svn_fs_fs__revision_file_t *rev_file;
- apr_finfo_t finfo;
-
- /* Get the size of the file. */
- const char *path = svn_dirent_join(context->shard_dir,
- apr_psprintf(iterpool, "%ld",
- context->start_rev),
- pool);
- SVN_ERR(svn_io_stat(&finfo, path, APR_FINFO_SIZE, pool));
+ svn_filesize_t revfile_size;
/* Copy all the bits from the rev file to the end of the pack file. */
SVN_ERR(svn_fs_fs__open_pack_or_rev_file(&rev_file, context->fs,
context->start_rev, pool,
iterpool));
+ /* Get the size of the file. */
+ SVN_ERR(svn_io_file_size_get(&revfile_size, rev_file->file, pool));
+
SVN_ERR(copy_file_data(context, context->pack_file, rev_file->file,
- finfo.size, iterpool));
+ revfile_size, iterpool));
/* mark the start of a new revision */
SVN_ERR(svn_fs_fs__l2p_proto_index_add_revision(context->proto_l2p_index,
@@ -1460,7 +1456,7 @@ append_revision(pack_context_t *context,
/* read the phys-to-log index file until we covered the whole rev file.
* That index contains enough info to build both target indexes from it. */
- while (offset < finfo.size)
+ while (offset < revfile_size)
{
/* read one cluster */
int i;
@@ -1484,7 +1480,7 @@ append_revision(pack_context_t *context,
/* process entry while inside the rev file */
offset = entry->offset;
- if (offset < finfo.size)
+ if (offset < revfile_size)
{
entry->offset += context->pack_offset;
offset += entry->size;
@@ -1498,7 +1494,7 @@ append_revision(pack_context_t *context,
}
svn_pool_destroy(iterpool);
- context->pack_offset += finfo.size;
+ context->pack_offset += revfile_size;
SVN_ERR(svn_fs_fs__close_revision_file(rev_file));