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);


Reply via email to