You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2012/08/22 14:27:14 UTC
svn commit: r1376011 - in /subversion/trunk/subversion:
libsvn_fs/fs-loader.c libsvn_fs/fs-loader.h libsvn_fs_base/fs.c
libsvn_fs_fs/fs.c
Author: philip
Date: Wed Aug 22 12:27:14 2012
New Revision: 1376011
URL: http://svn.apache.org/viewvc?rev=1376011&view=rev
Log:
Pass the FS common pool to the backend pack implementation as this
allows FSFS to correctly share/lock a multi-threaded application.
This bug didn't affect the Subversion project's use of pack since
svnadmin is single-threaded.
* subversion/libsvn_fs/fs-loader.h
(struct fs_library_vtable_t): Add common_pool parameter to pack_fs.
* subversion/libsvn_fs/fs-loader.c
(svn_fs_pack): Pass common pool when calling pack_fs.
* subversion/libsvn_fs_fs/fs.c
(fs_pack): Add common_pool parameter, pass to fs_serialized_init.
* subversion/libsvn_fs_base/fs.c
(base_bdb_pack): Add common_pool parameter.
Modified:
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_fs/fs.c
Modified: subversion/trunk/subversion/libsvn_fs/fs-loader.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs/fs-loader.c?rev=1376011&r1=1376010&r2=1376011&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs/fs-loader.c (original)
+++ subversion/trunk/subversion/libsvn_fs/fs-loader.c Wed Aug 22 12:27:14 2012
@@ -601,7 +601,8 @@ svn_fs_pack(const char *path,
SVN_MUTEX__WITH_LOCK(common_pool_lock,
vtable->pack_fs(fs, path, notify_func, notify_baton,
- cancel_func, cancel_baton, pool));
+ cancel_func, cancel_baton, pool,
+ common_pool));
return SVN_NO_ERROR;
}
Modified: subversion/trunk/subversion/libsvn_fs/fs-loader.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs/fs-loader.h?rev=1376011&r1=1376010&r2=1376011&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs/fs-loader.h (original)
+++ subversion/trunk/subversion/libsvn_fs/fs-loader.h Wed Aug 22 12:27:14 2012
@@ -107,7 +107,7 @@ typedef struct fs_library_vtable_t
svn_error_t *(*pack_fs)(svn_fs_t *fs, const char *path,
svn_fs_pack_notify_t notify_func, void *notify_baton,
svn_cancel_func_t cancel_func, void *cancel_baton,
- apr_pool_t *pool);
+ apr_pool_t *pool, apr_pool_t *common_pool);
/* Provider-specific functions should go here, even if they could go
in an object vtable, so that they are all kept together. */
Modified: subversion/trunk/subversion/libsvn_fs_base/fs.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_base/fs.c?rev=1376011&r1=1376010&r2=1376011&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_base/fs.c (original)
+++ subversion/trunk/subversion/libsvn_fs_base/fs.c Wed Aug 22 12:27:14 2012
@@ -911,7 +911,8 @@ base_bdb_pack(svn_fs_t *fs,
void *notify_baton,
svn_cancel_func_t cancel,
void *cancel_baton,
- apr_pool_t *pool)
+ apr_pool_t *pool,
+ apr_pool_t *common_pool)
{
/* Packing is currently a no op for BDB. */
return SVN_NO_ERROR;
Modified: subversion/trunk/subversion/libsvn_fs_fs/fs.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs.c?rev=1376011&r1=1376010&r2=1376011&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/fs.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/fs.c Wed Aug 22 12:27:14 2012
@@ -263,13 +263,14 @@ fs_pack(svn_fs_t *fs,
void *notify_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
- apr_pool_t *pool)
+ apr_pool_t *pool,
+ apr_pool_t *common_pool)
{
SVN_ERR(svn_fs__check_fs(fs, FALSE));
SVN_ERR(initialize_fs_struct(fs));
SVN_ERR(svn_fs_fs__open(fs, path, pool));
SVN_ERR(svn_fs_fs__initialize_caches(fs, pool));
- SVN_ERR(fs_serialized_init(fs, pool, pool));
+ SVN_ERR(fs_serialized_init(fs, common_pool, pool));
return svn_fs_fs__pack(fs, notify_func, notify_baton,
cancel_func, cancel_baton, pool);
}