[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

RE: svn commit: r1470738 - in /subversion/trunk/subversion: include/svn_fs.h libsvn_fs/fs-loader.c libsvn_repos/dump.c

From: Bert Huijben <bert_at_qqmail.nl>
Date: Tue, 23 Apr 2013 15:25:47 +0200

> -----Original Message-----
> From: stefan2_at_apache.org [mailto:stefan2_at_apache.org]
> Sent: dinsdag 23 april 2013 00:27
> To: commits_at_subversion.apache.org
> Subject: svn commit: r1470738 - in /subversion/trunk/subversion:
> include/svn_fs.h libsvn_fs/fs-loader.c libsvn_repos/dump.c
>
> Author: stefan2
> Date: Mon Apr 22 22:26:39 2013
> New Revision: 1470738
>
> URL: http://svn.apache.org/r1470738
> Log:
> Make svn_fs_verify accept a FS_CONFIG parameter similar to svn_fs_open()
> and svn_fs_create(). Use that in svn_repos_verify_fs2 to check FS with
> the same configuration parameters that were used open opening FS.
>
> Besides the mere symmetry aspect, this is essential use consistent cache
> settings during FS verification, particularly using the same, separate
> cache namespace.
>
> * subversion/include/svn_fs.h
> (svn_fs_config): declare new API
> (svn_fs_verify): add FS_CONFIG parameter
>
> * subversion/libsvn_fs/fs-loader.c
> (svn_fs_verify): pass the FS_CONFIG through to the FS constructor
> (svn_fs_config): implement
>
> * subversion/libsvn_repos/dump.c
> (svn_repos_verify_fs2): use the same configuration during verification
> as was used to open FS
>
> Modified:
> subversion/trunk/subversion/include/svn_fs.h
> subversion/trunk/subversion/libsvn_fs/fs-loader.c
> subversion/trunk/subversion/libsvn_repos/dump.c
>
> Modified: subversion/trunk/subversion/include/svn_fs.h
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_fs.
> h?rev=1470738&r1=1470737&r2=1470738&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/include/svn_fs.h (original)
> +++ subversion/trunk/subversion/include/svn_fs.h Mon Apr 22 22:26:39
> 2013
> @@ -325,6 +325,20 @@ svn_fs_path(svn_fs_t *fs,
> apr_pool_t *pool);
>
> /**
> + * Return a shallow copy of the configuration parameters used to open
> + * @a fs, allocated in @a pool. It may be @c NULL. The contents of the
> + * hash contents remains valid only for @a fs's lifetime.
> + *
> + * @note This is just what was passed to svn_fs_create() or svn_fs_open().
> + * You may not modify it.
> + *
> + * @since New in 1.8.
> + */
> +apr_hash_t *
> +svn_fs_config(svn_fs_t *fs,
> + apr_pool_t *pool);
> +
> +/**
> * Delete the filesystem at @a path.
> *
> * @note: Deleting a filesystem that has an open svn_fs_t is not
> @@ -2466,7 +2480,9 @@ svn_fs_pack(const char *db_path,
> /**
> * Perform backend-specific data consistency and correctness validations
> * to the Subversion filesystem (mainly the meta-data) located in the
> - * directory @a path. Use @a scratch_pool for temporary allocations.
> + * directory @a path. Use the backend-specific configuration @a fs_config
> + * when opening the filesystem. @a NULL is valid for all backends.
> + * Use @a scratch_pool for temporary allocations.
> *
> * @a start and @a end define the (minimum) range of revisions to check.
> * If @a start is #SVN_INVALID_REVNUM, it defaults to @c r0. Likewise,
> @@ -2505,6 +2521,7 @@ svn_fs_pack(const char *db_path,
> */
> svn_error_t *
> svn_fs_verify(const char *path,
> + apr_hash_t *fs_config,
> svn_revnum_t start,
> svn_revnum_t end,
> svn_fs_progress_notify_func_t notify_func,
>
> Modified: subversion/trunk/subversion/libsvn_fs/fs-loader.c
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs/fs-
> loader.c?rev=1470738&r1=1470737&r2=1470738&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/libsvn_fs/fs-loader.c (original)
> +++ subversion/trunk/subversion/libsvn_fs/fs-loader.c Mon Apr 22 22:26:39
> 2013

<snip>

> @@ -515,6 +516,12 @@ svn_fs_path(svn_fs_t *fs, apr_pool_t *po
> return apr_pstrdup(pool, fs->path);
> }
>
> +apr_hash_t *
> +svn_fs_config(svn_fs_t *fs, apr_pool_t *pool)
> +{
> + return apr_hash_copy(pool, fs->config);
> +}
> +

fs->config can be NULL (see your own documentation of this function). In this case it caused a segfault.

The JavaHL tests on our buildbots triggered this problem and I applied a simple fix in r1470908.

I added this fix to the r1470738 in ^/subversion/branches/1.8.x/STATUS. Can you review this addition?

Thanks,

        Bert
Received on 2013-04-23 15:26:59 CEST

This is an archived mail posted to the Subversion Dev mailing list.