On Thu, Apr 26, 2012 at 07:52:40PM -0000, danie...@apache.org wrote:
> Author: danielsh
> Date: Thu Apr 26 19:52:39 2012
> New Revision: 1331050
> 
> URL: http://svn.apache.org/viewvc?rev=1331050&view=rev
> Log:
> Store UUID in svn_fs_t rather than in FSAP_DATA.  This improves upon the 
> situation created by r1330932.

Can you please update this log message to clearly explain what
"the situation" is? As written this log message is rather opaque.
I don't understand it.

> 
> Suggested by: gstein
> 
> 
> Update libsvn_fs:
> 
> * subversion/libsvn_fs/fs-loader.h
>   (fs_vtable_t.get_uuid): Remove this member, with comment.
>   (svn_fs_t.uuid): New struct member.
> 
> * subversion/libsvn_fs/fs-loader.c
>   (svn_fs_get_uuid): Track new location of UUID.
> 
> 
> Update FSFS for the new location:
> 
> * subversion/libsvn_fs_fs/fs_fs.h,
>   subversion/libsvn_fs_fs/fs_fs.c:
>   (svn_fs_fs__get_uuid): Delete this function.  It is subsumed into
>     svn_fs_fs__open() and svn_fs_fs__create().
> 
> * subversion/libsvn_fs_fs/caching.c
>   (svn_fs_fs__initialize_caches, svn_fs_fs__initialize_txn_caches):
> * subversion/libsvn_fs_fs/fs.c
>   (fs_serialized_init):
> * subversion/libsvn_fs_fs/fs_fs.c
>   (svn_fs_fs__open, hotcopy_incremental_check_preconditions, 
>    hotcopy_incremental_check_preconditions, svn_fs_fs__set_uuid):
> * subversion/libsvn_fs_fs/tree.c
>   (fs_same_p): 
>     Track new location of UUID.
> 
> * subversion/libsvn_fs_fs/fs.c
>   (fs_vtable): Drop GET_UUID() member.
> 
> * subversion/libsvn_fs_fs/fs.h
>   (fs_fs_data_t.uuid): Remove this member.
> 
> 
> Update BDB for the new location:
> 
> * subversion/libsvn_fs_base/fs.c
>   (populate_opened_fs): New function.
>   (base_create, base_upgrade): Call it to populate svn_fs_t->uuid.
> 
> * subversion/libsvn_fs_base/uuid.h
>   (svn_fs_base__get_uuid): Rename to..
>   (svn_fs_base__populate_uuid): .. this, and change signature.
> 
> * subversion/libsvn_fs_base/uuid.c
>   (svn_fs_base__get_uuid): Rename to..
>   (svn_fs_base__populate_uuid): .. this, and adapt to the new signature.
> 
> * subversion/libsvn_fs_base/tree.c
>   (fs_same_p): 
> * subversion/libsvn_fs_base/uuid.c
>   (svn_fs_base__set_uuid):
>     Track new location of UUID.
>   
> * subversion/libsvn_fs_base/fs.c
>   (fs_vtable): Drop GET_UUID() member.
> 
> * subversion/libsvn_fs_base/fs.h
>   (base_fs_data_t.uuid): Remove this member.
> 
> 
> 
> Revert r1330932:
> 
> * subversion/libsvn_fs/fs-loader.c
>   (cache_uuid): Remove this function.
>   (svn_fs_open, svn_fs_create): Update callers.
>   (svn_fs_open_berkeley, svn_fs_create_berkeley): Update callers.
> 
> * subversion/libsvn_fs_util/fs-util.c
>   (svn_fs__identifier): Remove.
> 
> * subversion/include/private/svn_fs_util.h
>   (svn_fs__identifier): Reimplement as a macro.  It will be removed in the
>     next revision.
> 
> Modified:
>     subversion/trunk/subversion/include/private/svn_fs_util.h
>     subversion/trunk/subversion/libsvn_fs/fs-loader.c
>     subversion/trunk/subversion/libsvn_fs/fs-loader.h
>     subversion/trunk/subversion/libsvn_fs_base/fs.c
>     subversion/trunk/subversion/libsvn_fs_base/fs.h
>     subversion/trunk/subversion/libsvn_fs_base/tree.c
>     subversion/trunk/subversion/libsvn_fs_base/uuid.c
>     subversion/trunk/subversion/libsvn_fs_base/uuid.h
>     subversion/trunk/subversion/libsvn_fs_fs/caching.c
>     subversion/trunk/subversion/libsvn_fs_fs/fs.c
>     subversion/trunk/subversion/libsvn_fs_fs/fs.h
>     subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
>     subversion/trunk/subversion/libsvn_fs_fs/fs_fs.h
>     subversion/trunk/subversion/libsvn_fs_fs/tree.c
>     subversion/trunk/subversion/libsvn_fs_util/fs-util.c
> 
> Modified: subversion/trunk/subversion/include/private/svn_fs_util.h
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_fs_util.h?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/include/private/svn_fs_util.h (original)
> +++ subversion/trunk/subversion/include/private/svn_fs_util.h Thu Apr 26 
> 19:52:39 2012
> @@ -59,10 +59,8 @@ svn_fs__canonicalize_abspath(const char 
>  svn_error_t *
>  svn_fs__check_fs(svn_fs_t *fs, svn_boolean_t expect_open);
>  
> -/* Like svn_fs_get_uuid(), but in libsvn_fs_util and returns a const char *
> -   (allocated in RESULT_POOL), or NULL in case of errors. */
> -const char *
> -svn_fs__identifier(svn_fs_t *fs, apr_pool_t *result_pool);
> +/** Temporary, to be removed in the next revision. */
> +#define svn_fs__identifier(fs, unused) ((fs)->uuid)
>  
>  /* Constructing nice error messages for roots.  */
>  
> 
> Modified: subversion/trunk/subversion/libsvn_fs/fs-loader.c
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs/fs-loader.c?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs/fs-loader.c (original)
> +++ subversion/trunk/subversion/libsvn_fs/fs-loader.c Thu Apr 26 19:52:39 2012
> @@ -353,16 +353,6 @@ svn_fs_set_warning_func(svn_fs_t *fs, sv
>    fs->warning_baton = warning_baton;
>  }
>  
> -/* Read FS's UUID to cause it to be cached. */
> -/* ### Implementation detail?  Without this, r1330906 reenters trails. */
> -static svn_error_t *
> -cache_uuid(svn_fs_t *fs, apr_pool_t *scratch_pool)
> -{
> -  const char *uuid;
> -  SVN_ERR(svn_fs_get_uuid(fs, &uuid, scratch_pool));
> -  return SVN_NO_ERROR;
> -}
> -
>  svn_error_t *
>  svn_fs_create(svn_fs_t **fs_p, const char *path, apr_hash_t *fs_config,
>                apr_pool_t *pool)
> @@ -383,7 +373,6 @@ svn_fs_create(svn_fs_t **fs_p, const cha
>  
>    SVN_MUTEX__WITH_LOCK(common_pool_lock,
>                         vtable->create(*fs_p, path, pool, common_pool));
> -  SVN_ERR(cache_uuid(*fs_p, pool));
>    return SVN_NO_ERROR;
>  }
>  
> @@ -397,7 +386,6 @@ svn_fs_open(svn_fs_t **fs_p, const char 
>    *fs_p = fs_new(fs_config, pool);
>    SVN_MUTEX__WITH_LOCK(common_pool_lock,
>                         vtable->open_fs(*fs_p, path, pool, common_pool));
> -  SVN_ERR(cache_uuid(*fs_p, pool));
>    return SVN_NO_ERROR;
>  }
>  
> @@ -574,7 +562,6 @@ svn_fs_create_berkeley(svn_fs_t *fs, con
>    /* Perform the actual creation. */
>    SVN_MUTEX__WITH_LOCK(common_pool_lock,
>                         vtable->create(fs, path, fs->pool, common_pool));
> -  SVN_ERR(cache_uuid(fs, fs->pool)); /* No better pool.. */
>    return SVN_NO_ERROR;
>  }
>  
> @@ -586,7 +573,6 @@ svn_fs_open_berkeley(svn_fs_t *fs, const
>    SVN_ERR(fs_library_vtable(&vtable, path, fs->pool));
>    SVN_MUTEX__WITH_LOCK(common_pool_lock,
>                         vtable->open_fs(fs, path, fs->pool, common_pool));
> -  SVN_ERR(cache_uuid(fs, fs->pool)); /* No better pool.. */
>    return SVN_NO_ERROR;
>  }
>  
> @@ -1248,7 +1234,8 @@ svn_error_t *
>  svn_fs_get_uuid(svn_fs_t *fs, const char **uuid, apr_pool_t *pool)
>  {
>    /* If you change this, consider changing svn_fs__identifier(). */
> -  return svn_error_trace(fs->vtable->get_uuid(fs, uuid, pool));
> +  *uuid = apr_pstrdup(pool, fs->uuid);
> +  return SVN_NO_ERROR;
>  }
>  
>  svn_error_t *
> 
> Modified: subversion/trunk/subversion/libsvn_fs/fs-loader.h
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs/fs-loader.h?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs/fs-loader.h (original)
> +++ subversion/trunk/subversion/libsvn_fs/fs-loader.h Thu Apr 26 19:52:39 2012
> @@ -172,7 +172,7 @@ typedef struct fs_vtable_t
>                                    const svn_string_t *const *old_value_p,
>                                    const svn_string_t *value,
>                                    apr_pool_t *pool);
> -  svn_error_t *(*get_uuid)(svn_fs_t *fs, const char **uuid, apr_pool_t 
> *pool);
> +  /* There is no get_uuid(); see svn_fs_t.uuid docstring. */
>    svn_error_t *(*set_uuid)(svn_fs_t *fs, const char *uuid, apr_pool_t *pool);
>    svn_error_t *(*revision_root)(svn_fs_root_t **root_p, svn_fs_t *fs,
>                                  svn_revnum_t rev, apr_pool_t *pool);
> @@ -391,6 +391,9 @@ struct svn_fs_t
>    /* FSAP-specific vtable and private data */
>    fs_vtable_t *vtable;
>    void *fsap_data;
> +
> +  /* UUID, stored by open(), create(), and set_uuid(). */
> +  const char *uuid;
>  };
>  
>  
> 
> Modified: subversion/trunk/subversion/libsvn_fs_base/fs.c
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_base/fs.c?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_base/fs.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_base/fs.c Thu Apr 26 19:52:39 2012
> @@ -480,7 +480,6 @@ static fs_vtable_t fs_vtable = {
>    svn_fs_base__revision_prop,
>    svn_fs_base__revision_proplist,
>    svn_fs_base__change_rev_prop,
> -  svn_fs_base__get_uuid,
>    svn_fs_base__set_uuid,
>    svn_fs_base__revision_root,
>    svn_fs_base__begin_txn,
> @@ -647,6 +646,15 @@ open_databases(svn_fs_t *fs,
>  }
>  
>  
> +/* Called by functions that initialize an svn_fs_t struct, after that 
> +   initialization is done, to populate svn_fs_t->uuid. */
> +static svn_error_t *
> +populate_opened_fs(svn_fs_t *fs, apr_pool_t *scratch_pool)
> +{
> +  SVN_ERR(svn_fs_base__populate_uuid(fs, scratch_pool));
> +  return SVN_NO_ERROR;
> +}
> +
>  static svn_error_t *
>  base_create(svn_fs_t *fs, const char *path, apr_pool_t *pool,
>              apr_pool_t *common_pool)
> @@ -682,6 +690,8 @@ base_create(svn_fs_t *fs, const char *pa
>    if (svn_err) goto error;
>  
>    ((base_fs_data_t *) fs->fsap_data)->format = format;
> +
> +  SVN_ERR(populate_opened_fs(fs, pool));
>    return SVN_NO_ERROR;;
>  
>  error:
> @@ -766,6 +776,7 @@ base_open(svn_fs_t *fs, const char *path
>        if (svn_err) goto error;
>      }
>  
> +  SVN_ERR(populate_opened_fs(fs, pool));
>    return SVN_NO_ERROR;
>  
>   error:
> 
> Modified: subversion/trunk/subversion/libsvn_fs_base/fs.h
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_base/fs.h?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_base/fs.h (original)
> +++ subversion/trunk/subversion/libsvn_fs_base/fs.h Thu Apr 26 19:52:39 2012
> @@ -108,9 +108,6 @@ typedef struct base_fs_data_t
>       transaction trail alive. */
>    svn_boolean_t in_txn_trail;
>  
> -  /* The filesystem UUID (or NULL if not-yet-known; see svn_fs_get_uuid). */
> -  const char *uuid;
> -
>    /* The format number of this FS. */
>    int format;
>  
> 
> Modified: subversion/trunk/subversion/libsvn_fs_base/tree.c
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_base/tree.c?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_base/tree.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_base/tree.c Thu Apr 26 19:52:39 2012
> @@ -3192,17 +3192,7 @@ fs_same_p(svn_boolean_t *same_p,
>            svn_fs_t *fs2,
>            apr_pool_t *pool)
>  {
> -  const char *uuid1;
> -  const char *uuid2;
> -
> -  /* Random thought: if fetching UUIDs to compare filesystems is too
> -     expensive, one solution would be to cache the UUID in each fs
> -     object (copying the UUID into fs->pool, of course). */
> -
> -  SVN_ERR(fs1->vtable->get_uuid(fs1, &uuid1, pool));
> -  SVN_ERR(fs2->vtable->get_uuid(fs2, &uuid2, pool));
> -
> -  *same_p = ! strcmp(uuid1, uuid2);
> +  *same_p = ! strcmp(fs1->uuid, fs2->uuid);
>    return SVN_NO_ERROR;
>  }
>  
> 
> Modified: subversion/trunk/subversion/libsvn_fs_base/uuid.c
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_base/uuid.c?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_base/uuid.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_base/uuid.c Thu Apr 26 19:52:39 2012
> @@ -48,39 +48,27 @@ txn_body_get_uuid(void *baton, trail_t *
>  
>  
>  svn_error_t *
> -svn_fs_base__get_uuid(svn_fs_t *fs,
> -                      const char **uuid,
> -                      apr_pool_t *pool)
> +svn_fs_base__populate_uuid(svn_fs_t *fs,
> +                           apr_pool_t *scratch_pool)
>  {
> -  base_fs_data_t *bfd = fs->fsap_data;
>  
>    SVN_ERR(svn_fs__check_fs(fs, TRUE));
>  
> -  /* Check for a cached UUID first.  Failing that, we hit the
> -     database. */
> -  if (bfd->uuid)
> -    {
> -      *uuid = apr_pstrdup(pool, bfd->uuid);
> -    }
> -  else
> +  /* We hit the database. */
>      {
> +      const char *uuid;
>        struct get_uuid_args args;
> -      apr_pool_t *scratch_pool = svn_pool_create(pool);
>  
>        args.idx = 1;
> -      args.uuid = uuid;
> +      args.uuid = &uuid;
>        SVN_ERR(svn_fs_base__retry_txn(fs, txn_body_get_uuid, &args,
>                                       FALSE, scratch_pool));
>  
> -      if (*uuid)
> +      if (uuid)
>          {
> -          *uuid = apr_pstrdup(pool, *uuid);
> -
>            /* Toss what we find into the cache. */
> -          bfd->uuid = apr_pstrdup(fs->pool, *uuid);
> +          fs->uuid = apr_pstrdup(fs->pool, uuid);
>          }
> -
> -      svn_pool_destroy(scratch_pool);
>      }
>  
>    return SVN_NO_ERROR;
> @@ -109,7 +97,6 @@ svn_fs_base__set_uuid(svn_fs_t *fs,
>                        apr_pool_t *pool)
>  {
>    struct set_uuid_args args;
> -  base_fs_data_t *bfd = fs->fsap_data;
>  
>    SVN_ERR(svn_fs__check_fs(fs, TRUE));
>  
> @@ -122,7 +109,7 @@ svn_fs_base__set_uuid(svn_fs_t *fs,
>  
>    /* Toss our value into the cache. */
>    if (uuid)
> -    bfd->uuid = apr_pstrdup(fs->pool, uuid);
> +    fs->uuid = apr_pstrdup(fs->pool, uuid);
>  
>    return SVN_NO_ERROR;
>  }
> 
> Modified: subversion/trunk/subversion/libsvn_fs_base/uuid.h
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_base/uuid.h?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_base/uuid.h (original)
> +++ subversion/trunk/subversion/libsvn_fs_base/uuid.h Thu Apr 26 19:52:39 2012
> @@ -29,12 +29,15 @@ extern "C" {
>  
>  
>  
> +/* Set FS->UUID to the the value read from the database, allocated
> +   in FS->POOL.  Use SCRATCH_POOL for temporary allocations. */
> +svn_error_t *svn_fs_base__populate_uuid(svn_fs_t *fs,
> +                                        apr_pool_t *scratch_pool);
> +
> +
>  /* These functions implement some of the calls in the FS loader
>     library's fs vtable. */
>  
> -svn_error_t *svn_fs_base__get_uuid(svn_fs_t *fs, const char **uuid,
> -                                   apr_pool_t *pool);
> -
>  svn_error_t *svn_fs_base__set_uuid(svn_fs_t *fs, const char *uuid,
>                                     apr_pool_t *pool);
>  
> 
> Modified: subversion/trunk/subversion/libsvn_fs_fs/caching.c
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/caching.c?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_fs/caching.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/caching.c Thu Apr 26 19:52:39 
> 2012
> @@ -252,7 +252,7 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
>  {
>    fs_fs_data_t *ffd = fs->fsap_data;
>    const char *prefix = apr_pstrcat(pool,
> -                                   "fsfs:", ffd->uuid,
> +                                   "fsfs:", fs->uuid,
>                                     "/", fs->path, ":",
>                                     (char *)NULL);
>    svn_memcache_t *memcache;
> @@ -495,7 +495,7 @@ svn_fs_fs__initialize_txn_caches(svn_fs_
>       to start a new transaction later that receives the same id.
>       Therefore, throw in a uuid as well - just to be sure. */
>    const char *prefix = apr_pstrcat(pool,
> -                                   "fsfs:", ffd->uuid,
> +                                   "fsfs:", fs->uuid,
>                                     "/", fs->path,
>                                     ":", txn_id,
>                                     ":", svn_uuid_generate(pool), ":",
> 
> Modified: subversion/trunk/subversion/libsvn_fs_fs/fs.c
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs.c?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_fs/fs.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/fs.c Thu Apr 26 19:52:39 2012
> @@ -73,7 +73,7 @@ fs_serialized_init(svn_fs_t *fs, apr_poo
>       know of a better way of associating such data with the
>       repository. */
>  
> -  key = apr_pstrcat(pool, SVN_FSFS_SHARED_USERDATA_PREFIX, ffd->uuid,
> +  key = apr_pstrcat(pool, SVN_FSFS_SHARED_USERDATA_PREFIX, fs->uuid,
>                      (char *) NULL);
>    status = apr_pool_userdata_get(&val, key, common_pool);
>    if (status)
> @@ -130,7 +130,6 @@ static fs_vtable_t fs_vtable = {
>    svn_fs_fs__revision_prop,
>    svn_fs_fs__revision_proplist,
>    svn_fs_fs__change_rev_prop,
> -  svn_fs_fs__get_uuid,
>    svn_fs_fs__set_uuid,
>    svn_fs_fs__revision_root,
>    svn_fs_fs__begin_txn,
> 
> Modified: subversion/trunk/subversion/libsvn_fs_fs/fs.h
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs.h?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_fs/fs.h (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/fs.h Thu Apr 26 19:52:39 2012
> @@ -218,9 +218,6 @@ typedef struct fs_fs_data_t
>       layouts) or zero (for linear layouts). */
>    int max_files_per_dir;
>  
> -  /* The uuid of this FS. */
> -  const char *uuid;
> -
>    /* The revision that was youngest, last time we checked. */
>    svn_revnum_t youngest_rev_cache;
>  
> 
> 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=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c Thu Apr 26 19:52:39 2012
> @@ -1307,7 +1307,7 @@ svn_fs_fs__open(svn_fs_t *fs, const char
>  
>    limit = sizeof(buf);
>    SVN_ERR(svn_io_read_length_line(uuid_file, buf, &limit, pool));
> -  ffd->uuid = apr_pstrdup(fs->pool, buf);
> +  fs->uuid = apr_pstrdup(fs->pool, buf);
>  
>    SVN_ERR(svn_io_file_close(uuid_file, pool));
>  
> @@ -7500,17 +7500,6 @@ svn_fs_fs__recover(svn_fs_t *fs,
>  }
>  
>  svn_error_t *
> -svn_fs_fs__get_uuid(svn_fs_t *fs,
> -                    const char **uuid_p,
> -                    apr_pool_t *pool)
> -{
> -  fs_fs_data_t *ffd = fs->fsap_data;
> -
> -  *uuid_p = apr_pstrdup(pool, ffd->uuid);
> -  return SVN_NO_ERROR;
> -}
> -
> -svn_error_t *
>  svn_fs_fs__set_uuid(svn_fs_t *fs,
>                      const char *uuid,
>                      apr_pool_t *pool)
> @@ -7519,7 +7508,6 @@ svn_fs_fs__set_uuid(svn_fs_t *fs,
>    apr_size_t my_uuid_len;
>    const char *tmp_path;
>    const char *uuid_path = path_uuid(fs, pool);
> -  fs_fs_data_t *ffd = fs->fsap_data;
>  
>    if (! uuid)
>      uuid = svn_uuid_generate(pool);
> @@ -7540,7 +7528,7 @@ svn_fs_fs__set_uuid(svn_fs_t *fs,
>  
>    /* Remove the newline we added, and stash the UUID. */
>    my_uuid[my_uuid_len - 1] = '\0';
> -  ffd->uuid = my_uuid;
> +  fs->uuid = my_uuid;
>  
>    return SVN_NO_ERROR;
>  }
> @@ -8709,7 +8697,7 @@ hotcopy_incremental_check_preconditions(
>  
>    /* Make sure the UUID of source and destination match up.
>     * We don't want to copy over a different repository. */
> -  if (strcmp(src_ffd->uuid, dst_ffd->uuid) != 0)
> +  if (strcmp(src_fs->uuid, dst_fs->uuid) != 0)
>      return svn_error_create(SVN_ERR_RA_UUID_MISMATCH, NULL,
>                              _("The UUID of the hotcopy source does "
>                                "not match the UUID of the hotcopy "
> @@ -9155,7 +9143,7 @@ hotcopy_create_empty_dest(svn_fs_t *src_
>  
>    /* Create lock file and UUID. */
>    SVN_ERR(svn_io_file_create(path_lock(dst_fs, pool), "", pool));
> -  SVN_ERR(svn_fs_fs__set_uuid(dst_fs, src_ffd->uuid, pool));
> +  SVN_ERR(svn_fs_fs__set_uuid(dst_fs, dst_fs->uuid, pool));
>  
>    /* Create the min unpacked rev file. */
>    if (dst_ffd->format >= SVN_FS_FS__MIN_PACKED_FORMAT)
> 
> Modified: subversion/trunk/subversion/libsvn_fs_fs/fs_fs.h
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs_fs.h?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.h (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.h Thu Apr 26 19:52:39 2012
> @@ -355,12 +355,6 @@ svn_error_t *svn_fs_fs__create(svn_fs_t 
>                                 const char *path,
>                                 apr_pool_t *pool);
>  
> -/* Store the uuid of the repository FS in *UUID.  Allocate space in
> -   POOL. */
> -svn_error_t *svn_fs_fs__get_uuid(svn_fs_t *fs,
> -                                 const char **uuid,
> -                                 apr_pool_t *pool);
> -
>  /* Set the uuid of repository FS to UUID, if UUID is not NULL;
>     otherwise, set the uuid of FS to a newly generated UUID.  Perform
>     temporary allocations in POOL. */
> 
> Modified: subversion/trunk/subversion/libsvn_fs_fs/tree.c
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/tree.c?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_fs/tree.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/tree.c Thu Apr 26 19:52:39 2012
> @@ -1925,17 +1925,7 @@ fs_same_p(svn_boolean_t *same_p,
>            svn_fs_t *fs2,
>            apr_pool_t *pool)
>  {
> -  const char *uuid1;
> -  const char *uuid2;
> -
> -  /* Random thought: if fetching UUIDs to compare filesystems is too
> -     expensive, one solution would be to cache the UUID in each fs
> -     object (copying the UUID into fs->pool, of course). */
> -
> -  SVN_ERR(fs1->vtable->get_uuid(fs1, &uuid1, pool));
> -  SVN_ERR(fs2->vtable->get_uuid(fs2, &uuid2, pool));
> -
> -  *same_p = ! strcmp(uuid1, uuid2);
> +  *same_p = ! strcmp(fs1->uuid, fs2->uuid);
>    return SVN_NO_ERROR;
>  }
>  
> 
> Modified: subversion/trunk/subversion/libsvn_fs_util/fs-util.c
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_util/fs-util.c?rev=1331050&r1=1331049&r2=1331050&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_util/fs-util.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_util/fs-util.c Thu Apr 26 19:52:39 
> 2012
> @@ -171,22 +171,3 @@ svn_fs__append_to_merged_froms(svn_merge
>  
>    return SVN_NO_ERROR;
>  }
> -
> -const char *
> -svn_fs__identifier(svn_fs_t *fs, apr_pool_t *result_pool)
> -{
> -  const char *uuid;
> -  svn_error_t *err;
> -
> -  err = fs->vtable->get_uuid(fs, &uuid, result_pool);
> -  if (err)
> -    {
> -      /* Log the error and discard it. */
> -      fs->warning(fs->warning_baton, err);
> -      svn_error_clear(err);
> -      return NULL;
> -    }
> -  
> -  return uuid;
> -}
> -
> 

Reply via email to