rpm/db.diff

112 lines
4.4 KiB
Diff

--- db/db/db.c.orig 2004-11-11 15:58:46.000000000 +0000
+++ db/db/db.c 2005-12-15 16:17:45.000000000 +0000
@@ -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.orig 2004-10-16 01:31:54.000000000 +0000
+++ db/db/db_iface.c 2005-12-15 16:17:45.000000000 +0000
@@ -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.orig 2004-10-16 01:31:54.000000000 +0000
+++ db/dbinc/db.in 2005-12-15 16:17:45.000000000 +0000
@@ -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.orig 2004-10-16 01:31:54.000000000 +0000
+++ db/dbinc/mp.h 2005-12-15 16:25:56.000000000 +0000
@@ -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/mp/mp_sync.c.orig 2004-11-11 15:58:48.000000000 +0000
+++ db/mp/mp_sync.c 2005-12-15 16:23:57.000000000 +0000
@@ -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.
--- db/dist/s_config.orig 2003-12-15 21:42:41.000000000 +0000
+++ db/dist/s_config 2005-02-11 14:44:09.018907747 +0000
@@ -20,14 +20,15 @@
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
+mv configure configure.old
+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" \
+< configure.old > configure
+rm -f configure.old
rm -rf autom4te.cache
chmod 555 configure
--- db/dist/aclocal/options.ac.orig 2005-12-15 16:43:14.000000000 +0000
+++ db/dist/aclocal/options.ac 2005-12-15 16:43:40.000000000 +0000
@@ -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])