Blame db.diff

Bernhard M. Wiedemann 1250f9
--- db/db/db.c.orig	2010-04-12 20:25:22.000000000 +0000
Bernhard M. Wiedemann 1250f9
+++ db/db/db.c	2011-05-12 11:38:59.000000000 +0000
Bernhard M. Wiedemann 1250f9
@@ -646,6 +646,8 @@ __env_mpool(dbp, fname, flags)
Bernhard M. Wiedemann 1250f9
 			MAKE_INMEM(dbp);
Bernhard M. Wiedemann 1250f9
 		return (ret);
Bernhard M. Wiedemann 1250f9
 	}
Bernhard M. Wiedemann 1250f9
+	if (LF_ISSET(DB_NOFSYNC) && mpf->mfp)
Bernhard M. Wiedemann 1250f9
+	    F_SET(mpf->mfp, MP_NOFSYNC);
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
 	/*
Bernhard M. Wiedemann 1250f9
 	 * Set the open flag.  We use it to mean that the dbp has gone
Bernhard M. Wiedemann 1250f9
--- db/db/db_iface.c.orig	2010-04-12 20:25:22.000000000 +0000
Bernhard M. Wiedemann 1250f9
+++ db/db/db_iface.c	2011-05-12 11:21:32.000000000 +0000
Bernhard M. Wiedemann 1250f9
@@ -1230,6 +1230,7 @@ __db_open_arg(dbp, txn, fname, dname, ty
Bernhard M. Wiedemann 1250f9
 #define	OKFLAGS								\
Bernhard M. Wiedemann 1250f9
 	(DB_AUTO_COMMIT | DB_CREATE | DB_EXCL | DB_FCNTL_LOCKING |	\
Bernhard M. Wiedemann 1250f9
 	DB_MULTIVERSION | DB_NOMMAP | DB_NO_AUTO_COMMIT | DB_RDONLY |	\
Bernhard M. Wiedemann 1250f9
+	DB_NOFSYNC |							\
Bernhard M. Wiedemann 1250f9
 	DB_RDWRMASTER | DB_READ_UNCOMMITTED | DB_THREAD | DB_TRUNCATE)
Bernhard M. Wiedemann 1250f9
 	if ((ret = __db_fchk(env, "DB->open", flags, OKFLAGS)) != 0)
Bernhard M. Wiedemann 1250f9
 		return (ret);
Bernhard M. Wiedemann 1250f9
--- db/dbinc/mp.h.orig	2010-04-12 20:25:22.000000000 +0000
Bernhard M. Wiedemann 1250f9
+++ db/dbinc/mp.h	2011-05-12 12:01:32.000000000 +0000
Bernhard M. Wiedemann 1250f9
@@ -467,6 +467,7 @@ struct __mpoolfile {
Bernhard M. Wiedemann 1250f9
 #define	MP_FAKE_UOC		0x080	/* Unlink_on_close field: fake flag. */
Bernhard M. Wiedemann 1250f9
 #define	MP_NOT_DURABLE		0x100	/* File is not durable. */
Bernhard M. Wiedemann 1250f9
 #define	MP_TEMP			0x200	/* Backing file is a temporary. */
Bernhard M. Wiedemann 1250f9
+#define	MP_NOFSYNC		0x400	/* Don't fsync */
Bernhard M. Wiedemann 1250f9
 	u_int32_t  flags;
Bernhard M. Wiedemann 1250f9
 };
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
--- db/dbinc_auto/api_flags.in.orig	2011-05-12 11:40:57.000000000 +0000
Bernhard M. Wiedemann 1250f9
+++ db/dbinc_auto/api_flags.in	2011-05-12 11:55:10.000000000 +0000
Bernhard M. Wiedemann 1250f9
@@ -83,6 +83,7 @@
Bernhard M. Wiedemann 1250f9
 #define	DB_NOORDERCHK				0x00000002
Bernhard M. Wiedemann 1250f9
 #define	DB_NOPANIC				0x00000800
Bernhard M. Wiedemann 1250f9
 #define	DB_NO_AUTO_COMMIT			0x00001000
Bernhard M. Wiedemann 1250f9
+#define	DB_NOFSYNC				0x00040000
Bernhard M. Wiedemann 1250f9
 #define	DB_ODDFILESIZE				0x00000080
Bernhard M. Wiedemann 1250f9
 #define	DB_ORDERCHKONLY				0x00000004
Bernhard M. Wiedemann 1250f9
 #define	DB_OVERWRITE				0x00001000
Bernhard M. Wiedemann 1250f9
--- db/dist/s_config.orig	2010-04-12 20:25:23.000000000 +0000
Bernhard M. Wiedemann 1250f9
+++ db/dist/s_config	2011-05-12 12:00:34.000000000 +0000
Bernhard M. Wiedemann 1250f9
@@ -8,7 +8,8 @@ trap 'rm -f aclocal.m4 ; exit 0' 0 1 2 3
Bernhard M. Wiedemann 1250f9
 . ./RELEASE
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
 echo "autoconf: building aclocal.m4..."
Bernhard M. Wiedemann 1250f9
-cat aclocal/*.m4 aclocal_java/*.m4 > aclocal.m4
Bernhard M. Wiedemann 1250f9
+cat aclocal/*.m4 aclocal_java/*.m4 > acinclude.m4
Bernhard M. Wiedemann 1250f9
+aclocal
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
 echo "autoconf: running autoheader to build config.hin..."
Bernhard M. Wiedemann 1250f9
 rm -f config.hin
Bernhard M. Wiedemann 1250f9
--- db/mp/mp_sync.c.orig	2010-04-12 20:25:34.000000000 +0000
Bernhard M. Wiedemann 1250f9
+++ db/mp/mp_sync.c	2011-05-12 11:36:58.000000000 +0000
Bernhard M. Wiedemann 1250f9
@@ -578,7 +578,7 @@ done:	/*
Bernhard M. Wiedemann 1250f9
 	if (ret == 0 && required_write) {
Bernhard M. Wiedemann 1250f9
 		if (dbmfp == NULL)
Bernhard M. Wiedemann 1250f9
 			ret = __memp_sync_files(env);
Bernhard M. Wiedemann 1250f9
-		else
Bernhard M. Wiedemann 1250f9
+		else if (!F_ISSET(dbmfp->mfp, MP_NOFSYNC))
Bernhard M. Wiedemann 1250f9
 			ret = __os_fsync(env, dbmfp->fhp);
Bernhard M. Wiedemann 1250f9
 	}
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
@@ -665,7 +665,7 @@ __memp_sync_file(env, mfp, argp, countp,
Bernhard M. Wiedemann 1250f9
 			    "%s: unable to flush", (char *)
Bernhard M. Wiedemann 1250f9
 			    R_ADDR(dbmp->reginfo, mfp->path_off));
Bernhard M. Wiedemann 1250f9
 		}
Bernhard M. Wiedemann 1250f9
-	} else
Bernhard M. Wiedemann 1250f9
+	} else if (!F_ISSET(dbmfp->mfp, MP_NOFSYNC))
Bernhard M. Wiedemann 1250f9
 		ret = __os_fsync(env, dbmfp->fhp);
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
 	/*
Bernhard M. Wiedemann 1250f9
@@ -801,6 +801,8 @@ __memp_mf_sync(dbmp, mfp, locked)
Bernhard M. Wiedemann 1250f9
 	COMPQUIET(hp, NULL);
Bernhard M. Wiedemann 1250f9
 	env = dbmp->env;
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
+	if (F_ISSET(mfp, MP_NOFSYNC))
Bernhard M. Wiedemann 1250f9
+	    return 0;
Bernhard M. Wiedemann 1250f9
 	/*
Bernhard M. Wiedemann 1250f9
 	 * We need to be holding the hash lock: we're using the path name
Bernhard M. Wiedemann 1250f9
 	 * and __memp_nameop might try and rename the file.