diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index d753a31cb3559ee7abcf4c691c160f1ae553fbfe..55d1ea05490b8b78740ca4eee58303b910be8024 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.379 2010/02/26 02:00:35 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.380 2010/03/10 02:04:48 itagaki Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -7897,7 +7897,7 @@ pg_start_backup(PG_FUNCTION_ARGS)
 		 * REDO pointer.  The oldest point in WAL that would be needed to
 		 * restore starting from the checkpoint is precisely the REDO pointer.
 		 */
-		LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
+		LWLockAcquire(ControlFileLock, LW_SHARED);
 		checkpointloc = ControlFile->checkPoint;
 		startpoint = ControlFile->checkPointCopy.redo;
 		LWLockRelease(ControlFileLock);