On Fri, Jun 21, 2013 at 09:16:16PM +0200, Stefan Fuhrmann wrote: > On Wed, Jun 19, 2013 at 12:37 AM, Daniel Shahaf <danie...@elego.de> wrote: > > > stef...@apache.org wrote on Sun, Jul 08, 2012 at 12:21:37 -0000: > > > Author: stefan2 > > > Date: Sun Jul 8 12:21:36 2012 > > > New Revision: 1358725 > > > > > > URL: http://svn.apache.org/viewvc?rev=1358725&view=rev > > > Log: > > > When upgrading to format 6 (or later), we must make sure that > > > revprop shard packing is in sync with revision data shard packing. > > > > > > * subversion/libsvn_fs_fs/fs_fs.c > > > (upgrade_pack_revprops): new function > > > (upgrade_body): use the new function to pack revprop shards > > > > > > Modified: > > > subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c > > > > > > Modified: subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c > > > URL: > > http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c?rev=1358725&r1=1358724&r2=1358725&view=diff > > > > > ============================================================================== > > > --- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c (original) > > > +++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c Sun Jul 8 12:21:36 > > 2012 > > > @@ -1398,6 +1398,85 @@ create_file_ignore_eexist(const char *fi > > > return svn_error_trace(err); > > > } > > > > > > +/* In the filesystem FS, pack all revprop shards up to min_unpacked_rev. > > > + * Use SCRATCH_POOL for temporary allocations. > > > + */ > > > +static svn_error_t * > > > +upgrade_pack_revprops(svn_fs_t *fs, > > > + apr_pool_t *scratch_pool) > > > +{ > > > + fs_fs_data_t *ffd = fs->fsap_data; > > > + const char *revprops_shard_path; > > > + const char *revprops_pack_file_dir; > > > + apr_int64_t shard; > > > + apr_int64_t first_unpacked_shard > > > + = ffd->min_unpacked_rev / ffd->max_files_per_dir; > > > + > > > + apr_pool_t *iterpool = svn_pool_create(scratch_pool); > > > + const char *revsprops_dir = svn_dirent_join(fs->path, > > PATH_REVPROPS_DIR, > > > + scratch_pool); > > > + int compression_level = ffd->compress_packed_revprops > > > + ? SVN_DELTA_COMPRESSION_LEVEL_DEFAULT > > > + : SVN_DELTA_COMPRESSION_LEVEL_NONE; > > > + > > > + /* first, pack all revprops shards to match the packed revision > > shards */ > > > + for (shard = 0; shard < first_unpacked_shard; ++shard) > > > + { > > > > Would it be useful to have a progress_func here, that is called once per > > shard or so? Otherwise, this may perform an arbitrary amount of work > > (proportional to number of shards, i.e., O(HEAD)) with no feedback > > during it. > > > > Implemented in r1495545.
Thanks!