Author: hwright
Date: Thu Jun 10 11:56:43 2010
New Revision: 953289
URL: http://svn.apache.org/viewvc?rev=953289&view=rev
Log:
Merge r879902, r879916 from trunk:
* r879902, r879916
Disables file synchronization mutexes in fsfs on Windows. These mutexes
were added to make POSIX systems lock files that were in use by other
threads in the same process.
Windows implements per filehandle locking, so it doesn't need these
locks. We usually see the opposite problem in Subversion on Windows.
Justification:
This gives a measurable performance boost (5% decrease in running time
on running the testsuite in parallel mode (on trunk). The difference
will be bigger when measured on a real subversion server like one
running apache or svnserve.
Votes:
+1: rhuijben, steveking, cmpilato
Modified:
subversion/branches/1.6.x/ (props changed)
subversion/branches/1.6.x/STATUS
subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.c
subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.h
subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs_fs.c
Propchange: subversion/branches/1.6.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jun 10 11:56:43 2010
@@ -72,4 +72,4 @@
/subversion/branches/tc_url_rev:874351-874483
/subversion/branches/tree-conflicts:868291-873154
/subversion/branches/tree-conflicts-notify:873926-874008
-/subversion/trunk:875965,875968,876004,876012,876017,876019,876022,876024,876032,876041-876042,876048,876051,876055-876056,876059,876083,876091,876097,876101,876104,876109,876123-876125,876129,876132,876138,876160,876167,876175,876180,876185,876205,876223-876225,876230,876233,876245,876252,876256,876283,876287,876312,876326-876327,876330,876366,876372,876374,876376,876383,876386,876442,876456-876457,876462-876464,876467,876469,876480,876486,876495-876497,876516-876518,876524,876526,876583,876601,876614,876628,876633,876641,876659,876687,876689,876705,876715,876726,876760,876763,876794,876804,876815-876816,876821,876825,876837,876840-876841,876843,876849,876857-876858,876862,876873,876890,876897,876905,876908,876925,876931,876934,876948-876949,876953,876987,876993,877011,877014,877016,877028-877029,877038,877119,877127,877146,877157,877191,877195,877203,877211,877230,877234,877237,877243,877249,877259,877261,877304,877319,877407,877437,877441-877442,877453,877459,877472,87754
4,877553,877565,877568,877573,877593,877595,877597,877601,877612,877665,877667,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,877815,877819,877821,877842,877848,877853,877867,877869,877873,877901,877909,877916,877931,877942,877953,877964,877968,877970,877981-877982,878005,878013,878015,878020,878046,878053,878062,878074,878080,878089,878091,878093,878095,878127,878129,878131,878142,878173-878176,878216,878240,878242,878255,878269,878272,878279,878296-878297,878303,878321,878335,878338,878341,878343,878353,878364,878367-878368,878385,878399,878423,878426,878447,878462,878484,878491,878498,878532,878595,878646,878659,878673,878682-878683,878690-878691,878693,878723,878760-878761,878873,878875,878877,878879,878905,878910-878911,878915-878916,878924-878925,878946,878949,878955,878960,878970,878981,879001,879033,879056,879074,879076,879081-879082,879093,879105,879126,879148,879170,879198-879199,879201,879271,879293,879357,879375-879376,879403,879631,879635-
879636,879688,879709-879711,879747,879954,879961,880082,880095,880105,880162,880226,880274-880275,880370,880450,880461,880474,880525-880526,880552,881905,884842,886164,886197,888715,888979,889081,889840,891672,892050,892085,895514,895653,896522,896915,898048,898963,899826,899828,900797,901304,901752,902093,904301,904394,904594,905303,905326,906256,906305,906587,908980-908981,917640,918211,922516,923389,923391,926151,926167,927323,927328,931209,931211,931392,931568,932942,933299,935992,935996,937610,944635,951753
+/subversion/trunk:875965,875968,876004,876012,876017,876019,876022,876024,876032,876041-876042,876048,876051,876055-876056,876059,876083,876091,876097,876101,876104,876109,876123-876125,876129,876132,876138,876160,876167,876175,876180,876185,876205,876223-876225,876230,876233,876245,876252,876256,876283,876287,876312,876326-876327,876330,876366,876372,876374,876376,876383,876386,876442,876456-876457,876462-876464,876467,876469,876480,876486,876495-876497,876516-876518,876524,876526,876583,876601,876614,876628,876633,876641,876659,876687,876689,876705,876715,876726,876760,876763,876794,876804,876815-876816,876821,876825,876837,876840-876841,876843,876849,876857-876858,876862,876873,876890,876897,876905,876908,876925,876931,876934,876948-876949,876953,876987,876993,877011,877014,877016,877028-877029,877038,877119,877127,877146,877157,877191,877195,877203,877211,877230,877234,877237,877243,877249,877259,877261,877304,877319,877407,877437,877441-877442,877453,877459,877472,87754
4,877553,877565,877568,877573,877593,877595,877597,877601,877612,877665,877667,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,877815,877819,877821,877842,877848,877853,877867,877869,877873,877901,877909,877916,877931,877942,877953,877964,877968,877970,877981-877982,878005,878013,878015,878020,878046,878053,878062,878074,878080,878089,878091,878093,878095,878127,878129,878131,878142,878173-878176,878216,878240,878242,878255,878269,878272,878279,878296-878297,878303,878321,878335,878338,878341,878343,878353,878364,878367-878368,878385,878399,878423,878426,878447,878462,878484,878491,878498,878532,878595,878646,878659,878673,878682-878683,878690-878691,878693,878723,878760-878761,878873,878875,878877,878879,878905,878910-878911,878915-878916,878924-878925,878946,878949,878955,878960,878970,878981,879001,879033,879056,879074,879076,879081-879082,879093,879105,879126,879148,879170,879198-879199,879201,879271,879293,879357,879375-879376,879403,879631,879635-
879636,879688,879709-879711,879747,879902,879916,879954,879961,880082,880095,880105,880162,880226,880274-880275,880370,880450,880461,880474,880525-880526,880552,881905,884842,886164,886197,888715,888979,889081,889840,891672,892050,892085,895514,895653,896522,896915,898048,898963,899826,899828,900797,901304,901752,902093,904301,904394,904594,905303,905326,906256,906305,906587,908980-908981,917640,918211,922516,923389,923391,926151,926167,927323,927328,931209,931211,931392,931568,932942,933299,935992,935996,937610,944635,951753
Modified: subversion/branches/1.6.x/STATUS
URL:
http://svn.apache.org/viewvc/subversion/branches/1.6.x/STATUS?rev=953289&r1=953288&r2=953289&view=diff
==============================================================================
--- subversion/branches/1.6.x/STATUS (original)
+++ subversion/branches/1.6.x/STATUS Thu Jun 10 11:56:43 2010
@@ -255,18 +255,3 @@ Veto-blocked changes:
Approved changes:
=================
-
- * r879902, r879916
- Disables file synchronization mutexes in fsfs on Windows. These mutexes
- were added to make POSIX systems lock files that were in use by other
- threads in the same process.
-
- Windows implements per filehandle locking, so it doesn't need these
- locks. We usually see the opposite problem in Subversion on Windows.
- Justification:
- This gives a measurable performance boost (5% decrease in running time
- on running the testsuite in parallel mode (on trunk). The difference
- will be bigger when measured on a real subversion server like one
- running apache or svnserve.
- Votes:
- +1: rhuijben, steveking, cmpilato
Modified: subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.c
URL:
http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.c?rev=953289&r1=953288&r2=953289&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.c (original)
+++ subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.c Thu Jun 10 11:56:43
2010
@@ -81,7 +81,7 @@ fs_serialized_init(svn_fs_t *fs, apr_poo
ffsd = apr_pcalloc(common_pool, sizeof(*ffsd));
ffsd->common_pool = common_pool;
-#if APR_HAS_THREADS
+#if SVN_FS_FS__USE_LOCK_MUTEX
/* POSIX fcntl locks are per-process, so we need a mutex for
intra-process synchronization when grabbing the repository write
lock. */
@@ -91,6 +91,14 @@ fs_serialized_init(svn_fs_t *fs, apr_poo
return svn_error_wrap_apr(status,
_("Can't create FSFS write-lock mutex"));
+ /* ... not to mention locking the txn-current file. */
+ status = apr_thread_mutex_create(&ffsd->txn_current_lock,
+ APR_THREAD_MUTEX_DEFAULT, common_pool);
+ if (status)
+ return svn_error_wrap_apr(status,
+ _("Can't create FSFS txn-current mutex"));
+#endif
+#if APR_HAS_THREADS
/* We also need a mutex for synchronising access to the active
transaction list and free transaction pointer. */
status = apr_thread_mutex_create(&ffsd->txn_list_lock,
@@ -98,15 +106,9 @@ fs_serialized_init(svn_fs_t *fs, apr_poo
if (status)
return svn_error_wrap_apr(status,
_("Can't create FSFS txn list mutex"));
-
- /* ... not to mention locking the txn-current file. */
- status = apr_thread_mutex_create(&ffsd->txn_current_lock,
- APR_THREAD_MUTEX_DEFAULT, common_pool);
- if (status)
- return svn_error_wrap_apr(status,
- _("Can't create FSFS txn-current mutex"));
#endif
+
key = apr_pstrdup(common_pool, key);
status = apr_pool_userdata_set(ffsd, key, NULL, common_pool);
if (status)
Modified: subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.h
URL:
http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.h?rev=953289&r1=953288&r2=953289&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.h (original)
+++ subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.h Thu Jun 10 11:56:43
2010
@@ -142,6 +142,15 @@ typedef struct fs_fs_shared_txn_data_t
apr_pool_t *pool;
} fs_fs_shared_txn_data_t;
+/* On most operating systems apr implements file locks per process, not
+ per file. On Windows apr implements the locking as per file handle
+ locks, so we don't have to add our own mutex for just in-process
+ synchronization. */
+#if APR_HAS_THREADS && !defined(WIN32)
+#define SVN_FS_FS__USE_LOCK_MUTEX 1
+#else
+#define SVN_FS_FS__USE_LOCK_MUTEX 0
+#endif
/* Private FSFS-specific data shared between all svn_fs_t objects that
relate to a particular filesystem, as identified by filesystem UUID.
@@ -161,7 +170,8 @@ typedef struct
#if APR_HAS_THREADS
/* A lock for intra-process synchronization when accessing the TXNS list. */
apr_thread_mutex_t *txn_list_lock;
-
+#endif
+#if SVN_FS_FS__USE_LOCK_MUTEX
/* A lock for intra-process synchronization when grabbing the
repository write lock. */
apr_thread_mutex_t *fs_write_lock;
Modified: subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs_fs.c
URL:
http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs_fs.c?rev=953289&r1=953288&r2=953289&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs_fs.c Thu Jun 10
11:56:43 2010
@@ -541,7 +541,7 @@ with_some_lock(svn_error_t *(*body)(void
apr_pool_t *pool),
void *baton,
const char *lock_filename,
-#if APR_HAS_THREADS
+#if SVN_FS_FS__USE_LOCK_MUTEX
apr_thread_mutex_t *lock_mutex,
#endif
apr_pool_t *pool)
@@ -549,7 +549,7 @@ with_some_lock(svn_error_t *(*body)(void
apr_pool_t *subpool = svn_pool_create(pool);
svn_error_t *err;
-#if APR_HAS_THREADS
+#if SVN_FS_FS__USE_LOCK_MUTEX
apr_status_t status;
/* POSIX fcntl locks are per-process, so we need to serialize locks
@@ -568,7 +568,7 @@ with_some_lock(svn_error_t *(*body)(void
svn_pool_destroy(subpool);
-#if APR_HAS_THREADS
+#if SVN_FS_FS__USE_LOCK_MUTEX
status = apr_thread_mutex_unlock(lock_mutex);
if (status && !err)
return svn_error_wrap_apr(status,
@@ -586,7 +586,7 @@ svn_fs_fs__with_write_lock(svn_fs_t *fs,
void *baton,
apr_pool_t *pool)
{
-#if APR_HAS_THREADS
+#if SVN_FS_FS__USE_LOCK_MUTEX
fs_fs_data_t *ffd = fs->fsap_data;
fs_fs_shared_data_t *ffsd = ffd->shared;
apr_thread_mutex_t *mutex = ffsd->fs_write_lock;
@@ -594,7 +594,7 @@ svn_fs_fs__with_write_lock(svn_fs_t *fs,
return with_some_lock(body, baton,
path_lock(fs, pool),
-#if APR_HAS_THREADS
+#if SVN_FS_FS__USE_LOCK_MUTEX
mutex,
#endif
pool);
@@ -609,7 +609,7 @@ with_txn_current_lock(svn_fs_t *fs,
void *baton,
apr_pool_t *pool)
{
-#if APR_HAS_THREADS
+#if SVN_FS_FS__USE_LOCK_MUTEX
fs_fs_data_t *ffd = fs->fsap_data;
fs_fs_shared_data_t *ffsd = ffd->shared;
apr_thread_mutex_t *mutex = ffsd->txn_current_lock;
@@ -617,7 +617,7 @@ with_txn_current_lock(svn_fs_t *fs,
return with_some_lock(body, baton,
path_txn_current_lock(fs, pool),
-#if APR_HAS_THREADS
+#if SVN_FS_FS__USE_LOCK_MUTEX
mutex,
#endif
pool);