File db.diff of Package rpm

--- db/db/db.c
+++ db/db/db.c
@@ -591,6 +591,8 @@ __db_dbenv_mpool(dbp, fname, flags)
 	    (F_ISSET(dbp, DB_AM_NOT_DURABLE) ? DB_TXN_NOT_DURABLE : 0),
 	    0, dbp->pgsize)) != 0)
 		return (ret);
+	if (LF_ISSET(DB_NOFSYNC) && mpf->mfp)
+	    F_SET(mpf->mfp, MP_NOFSYNC);
 
 	return (0);
 }
--- db/db/db_iface.c
+++ db/db/db_iface.c
@@ -1068,7 +1068,7 @@ __db_open_arg(dbp, txn, fname, dname, ty
 #define	OKFLAGS								\
     (DB_AUTO_COMMIT | DB_CREATE | DB_DIRTY_READ | DB_EXCL |		\
      DB_FCNTL_LOCKING | DB_NO_AUTO_COMMIT | DB_NOMMAP | DB_RDONLY |	\
-     DB_RDWRMASTER | DB_THREAD | DB_TRUNCATE | DB_WRITEOPEN)
+     DB_RDWRMASTER | DB_THREAD | DB_TRUNCATE | DB_WRITEOPEN | DB_NOFSYNC)
 	if ((ret = __db_fchk(dbenv, "DB->open", flags, OKFLAGS)) != 0)
 		return (ret);
 	if (LF_ISSET(DB_EXCL) && !LF_ISSET(DB_CREATE))
--- db/dbinc/db.in
+++ db/dbinc/db.in
@@ -260,6 +260,7 @@ struct __db_dbt {
 #define	DB_FCNTL_LOCKING      0x0002000	/* UNDOC: fcntl(2) locking. */
 #define	DB_RDWRMASTER	      0x0004000	/* UNDOC: allow subdb master open R/W */
 #define	DB_WRITEOPEN	      0x0008000	/* UNDOC: open with write lock. */
+#define	DB_NOFSYNC	      0x0010000	/* UNDOC: don't fsync */
 
 /*
  * Flags private to DB_ENV->txn_begin.
--- db/dbinc/mp.h
+++ db/dbinc/mp.h
@@ -309,6 +309,7 @@ struct __mpoolfile {
 #define	MP_FAKE_UOC		0x080	/* Unlink_on_close field: fake flag. */
 #define	MP_NOT_DURABLE		0x100	/* File is not durable. */
 #define	MP_TEMP			0x200	/* Backing file is a temporary. */
+#define MP_NOFSYNC		0x400	/* Don't fsync */
 	u_int32_t  flags;
 };
 
--- db/dist/aclocal/options.ac
+++ db/dist/aclocal/options.ac
@@ -277,10 +277,6 @@ fi
 
 # Uniquename excludes C++, Java, RPC.
 if test "$db_cv_uniquename" = "yes"; then
-	if test "$db_cv_rpc" = "yes"; then
-		AC_MSG_ERROR(
-		    [--with-uniquename is not compatible with --enable-rpc])
-	fi
 	if test "$db_cv_cxx" = "yes"; then
 		AC_MSG_ERROR(
 		    [--with-uniquename is not compatible with --enable-cxx])
--- db/dist/configure.ac
+++ db/dist/configure.ac
@@ -690,14 +690,14 @@ LTLIBOBJS=`echo "$LIB@&t@OBJS" |
 AC_SUBST(LTLIBOBJS)
 
 # Initial output file list.
-CREATE_LIST="Makefile
-    db_cxx.h:$srcdir/../dbinc/db_cxx.in
-    db_int.h:$srcdir/../dbinc/db_int.in
+CREATE_LIST="Makefile \
+    db_cxx.h:$srcdir/../dbinc/db_cxx.in \
+    db_int.h:$srcdir/../dbinc/db_int.in \
     include.tcl:$srcdir/../test/include.tcl"
 
 # MinGW needs win_db.h.
 if test "$db_cv_mingw" = "yes"; then
-CREATE_LIST="$CREATE_LIST
+CREATE_LIST="$CREATE_LIST \
     win_db.h:$srcdir/win_db.in"
 fi
 
@@ -705,10 +705,10 @@ fi
 # prototypes, and, if configured for unique names, a list of #defines
 # to do DB_VERSION_UNIQUE_NAME substitution.
 if test "$db_cv_uniquename" = "yes"; then
-	CREATE_LIST="$CREATE_LIST
+	CREATE_LIST="$CREATE_LIST \
 	db.h:$srcdir/../dbinc/db.in:$srcdir/../dbinc_auto/ext_def.in:$srcdir/../dbinc_auto/ext_prot.in"
 else
-	CREATE_LIST="$CREATE_LIST
+	CREATE_LIST="$CREATE_LIST \
 	db.h:$srcdir/../dbinc/db.in:$srcdir/../dbinc_auto/ext_prot.in"
 fi
 
@@ -716,7 +716,7 @@ fi
 # does the DB_VERSION_UNIQUE_NAME substitution), which is included by
 # the db_int.h file.
 if test "$db_cv_uniquename" = "yes"; then
-	CREATE_LIST="$CREATE_LIST
+	CREATE_LIST="$CREATE_LIST \
 	db_int_def.h:$srcdir/../dbinc_auto/int_def.in"
 	db_int_def='#include "db_int_def.h"'
 fi
@@ -726,12 +726,12 @@ fi
 # of #defines to do DB_VERSION_UNIQUE_NAME substitution.
 if test "$db_cv_compat185" = "yes"; then
 	if test "$db_cv_uniquename" = "yes"; then
-		CREATE_LIST="$CREATE_LIST
-		db_185.h:$srcdir/../dbinc/db_185.in:$srcdir/../dbinc_auto/ext_185_def.in:$srcdir/../dbinc_auto/ext_185_prot.in
+		CREATE_LIST="$CREATE_LIST \
+		db_185.h:$srcdir/../dbinc/db_185.in:$srcdir/../dbinc_auto/ext_185_def.in:$srcdir/../dbinc_auto/ext_185_prot.in \
 		db185_int.h:$srcdir/../db185/db185_int.in:$srcdir/../dbinc_auto/ext_185_def.in:$srcdir/../dbinc_auto/ext_185_prot.in"
 	else
-		CREATE_LIST="$CREATE_LIST
-		db_185.h:$srcdir/../dbinc/db_185.in:$srcdir/../dbinc_auto/ext_185_prot.in
+		CREATE_LIST="$CREATE_LIST \
+		db_185.h:$srcdir/../dbinc/db_185.in:$srcdir/../dbinc_auto/ext_185_prot.in \
 		db185_int.h:$srcdir/../db185/db185_int.in:$srcdir/../dbinc_auto/ext_185_prot.in"
 	fi
 fi
--- db/dist/s_config
+++ db/dist/s_config
@@ -8,7 +8,8 @@ trap 'rm -f aclocal.m4 ; exit 0' 0 1 2 3
 . ./RELEASE
 
 echo "autoconf: building aclocal.m4..."
-cat aclocal/*.ac aclocal_java/*.ac > aclocal.m4
+cat aclocal/*.ac aclocal_java/*.ac > acinclude.m4
+aclocal
 
 echo "autoconf: running autoheader to build config.hin..."
 rm -f config.hin
@@ -20,14 +21,13 @@ rm -f configure
 autoconf
 
 # Edit version information we couldn't pre-compute.
-(echo "1,\$s/__EDIT_DB_VERSION_MAJOR__/$DB_VERSION_MAJOR/g" &&
- echo "1,\$s/__EDIT_DB_VERSION_MINOR__/$DB_VERSION_MINOR/g" &&
- echo "1,\$s/__EDIT_DB_VERSION_PATCH__/$DB_VERSION_PATCH/g" &&
- echo "1,\$s/__EDIT_DB_VERSION_STRING__/$DB_VERSION_STRING/g" &&
- echo "1,\$s/__EDIT_DB_VERSION_UNIQUE_NAME__/$DB_VERSION_UNIQUE_NAME/g" &&
- echo "1,\$s/__EDIT_DB_VERSION__/$DB_VERSION/g" &&
- echo "w" &&
- echo "q") | ed configure
+sed -e "s/__EDIT_DB_VERSION_MAJOR__/$DB_VERSION_MAJOR/g" \
+    -e "s/__EDIT_DB_VERSION_MINOR__/$DB_VERSION_MINOR/g" \
+    -e "s/__EDIT_DB_VERSION_PATCH__/$DB_VERSION_PATCH/g" \
+    -e "s/__EDIT_DB_VERSION_STRING__/$DB_VERSION_STRING/g" \
+    -e "s/__EDIT_DB_VERSION_UNIQUE_NAME__/$DB_VERSION_UNIQUE_NAME/g" \
+    -e "s/__EDIT_DB_VERSION__/$DB_VERSION/g" \
+  -i configure
 
 rm -rf autom4te.cache
 chmod 555 configure
--- db/mp/mp_sync.c
+++ db/mp/mp_sync.c
@@ -553,7 +553,7 @@ done:	/*
 	if (ret == 0 && (op == DB_SYNC_CACHE || op == DB_SYNC_FILE)) {
 		if (dbmfp == NULL)
 			ret = __memp_sync_files(dbenv, dbmp);
-		else
+		else if (!dbmfp->mfp || !F_ISSET(dbmfp->mfp, MP_NOFSYNC))
 			ret = __os_fsync(dbenv, dbmfp->fhp);
 	}
 
@@ -600,7 +600,7 @@ int __memp_sync_files(dbenv, dbmp)
 		MUTEX_THREAD_LOCK(dbenv, dbmp->mutexp);
 		for (dbmfp = TAILQ_FIRST(&dbmp->dbmfq);
 		    dbmfp != NULL; dbmfp = TAILQ_NEXT(dbmfp, q)) {
-			if (dbmfp->mfp != mfp || F_ISSET(dbmfp, MP_READONLY))
+			if (dbmfp->mfp != mfp || F_ISSET(dbmfp, MP_READONLY | MP_NOFSYNC))
 				continue;
 			ret = __os_fsync(dbenv, dbmfp->fhp);
 			break;
@@ -662,6 +662,9 @@ __memp_mf_sync(dbmp, mfp)
 
 	dbenv = dbmp->dbenv;
 
+	if (F_ISSET(mfp, MP_NOFSYNC))
+	    return 0;
+
 	/*
 	 * Expects caller to be holding the region lock: we're using the path
 	 * name and __memp_nameop might try and rename the file.