mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-05-10 17:28:26 +02:00
Zwischencommit beim Umzug auf LFS 6.2.
git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@299 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8
This commit is contained in:
111
src/patches/db-4.4.20-fixes-1.patch
Normal file
111
src/patches/db-4.4.20-fixes-1.patch
Normal file
@@ -0,0 +1,111 @@
|
||||
Submitted By: Dan Nicholson <dnicholson AT linuxfromscratch DOT org>
|
||||
Date: 2006-09-02
|
||||
Initial Package Version: 4.4.20
|
||||
Origin: Upstream - http://www.sleepycat.com/update/4.4.20/patch.4.4.20.html
|
||||
Description: Bug fixes provided by the developer. Contains patches 1-4.
|
||||
|
||||
diff -pNur db-4.4.20.orig/db/db_cam.c db-4.4.20/db/db_cam.c
|
||||
--- db-4.4.20.orig/db/db_cam.c 2006-01-10 16:19:21.000000000 +0000
|
||||
+++ db-4.4.20/db/db_cam.c 2006-08-03 14:31:20.220319610 +0000
|
||||
@@ -579,11 +579,12 @@ __db_c_get(dbc_arg, key, data, flags)
|
||||
flags == DB_NEXT || flags == DB_NEXT_DUP || flags == DB_PREV)) {
|
||||
if (tmp_rmw && (ret = dbc_arg->c_am_writelock(dbc_arg)) != 0)
|
||||
return (ret);
|
||||
- if ((ret = __db_c_idup(cp->opd, &opd, DB_POSITION)) != 0)
|
||||
+ if (F_ISSET(dbc_arg, DBC_TRANSIENT))
|
||||
+ opd = cp->opd;
|
||||
+ else if ((ret = __db_c_idup(cp->opd, &opd, DB_POSITION)) != 0)
|
||||
return (ret);
|
||||
|
||||
- switch (ret =
|
||||
- opd->c_am_get(opd, key, data, flags, NULL)) {
|
||||
+ switch (ret = opd->c_am_get(opd, key, data, flags, NULL)) {
|
||||
case 0:
|
||||
goto done;
|
||||
case DB_NOTFOUND:
|
||||
@@ -596,12 +597,18 @@ __db_c_get(dbc_arg, key, data, flags)
|
||||
if ((ret = __db_c_close(opd)) != 0)
|
||||
goto err;
|
||||
opd = NULL;
|
||||
+ if (F_ISSET(dbc_arg, DBC_TRANSIENT))
|
||||
+ cp->opd = NULL;
|
||||
break;
|
||||
}
|
||||
goto err;
|
||||
default:
|
||||
goto err;
|
||||
}
|
||||
+ } else if (cp->opd != NULL && F_ISSET(dbc_arg, DBC_TRANSIENT)) {
|
||||
+ if ((ret = __db_c_close(cp->opd)) != 0)
|
||||
+ goto err;
|
||||
+ cp->opd = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
diff -pNur db-4.4.20.orig/mp/mp_fget.c db-4.4.20/mp/mp_fget.c
|
||||
--- db-4.4.20.orig/mp/mp_fget.c 2005-10-12 17:53:36.000000000 +0000
|
||||
+++ db-4.4.20/mp/mp_fget.c 2006-08-03 14:31:20.223318410 +0000
|
||||
@@ -587,8 +587,11 @@ alloc: /*
|
||||
*/
|
||||
if (state != SECOND_MISS && bhp->ref == 1) {
|
||||
bhp->priority = UINT32_MAX;
|
||||
- SH_TAILQ_REMOVE(&hp->hash_bucket, bhp, hq, __bh);
|
||||
- SH_TAILQ_INSERT_TAIL(&hp->hash_bucket, bhp, hq);
|
||||
+ if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) !=
|
||||
+ SH_TAILQ_LAST(&hp->hash_bucket, hq, __bh)) {
|
||||
+ SH_TAILQ_REMOVE(&hp->hash_bucket, bhp, hq, __bh);
|
||||
+ SH_TAILQ_INSERT_TAIL(&hp->hash_bucket, bhp, hq);
|
||||
+ }
|
||||
hp->hash_priority =
|
||||
SH_TAILQ_FIRSTP(&hp->hash_bucket, __bh)->priority;
|
||||
}
|
||||
diff -pNur db-4.4.20.orig/qam/qam_files.c db-4.4.20/qam/qam_files.c
|
||||
--- db-4.4.20.orig/qam/qam_files.c 2005-10-20 18:57:12.000000000 +0000
|
||||
+++ db-4.4.20/qam/qam_files.c 2006-08-03 14:31:20.211323209 +0000
|
||||
@@ -411,6 +411,12 @@ __qam_fremove(dbp, pgnoaddr)
|
||||
DB_APP_DATA, buf, 0, NULL, &real_name)) != 0)
|
||||
goto err;
|
||||
#endif
|
||||
+
|
||||
+ mpf = array->mpfarray[offset].mpf;
|
||||
+ /* This extent my already be marked for delete and closed. */
|
||||
+ if (mpf == NULL)
|
||||
+ goto err;
|
||||
+
|
||||
/*
|
||||
* The log must be flushed before the file is deleted. We depend on
|
||||
* the log record of the last delete to recreate the file if we crash.
|
||||
@@ -418,7 +424,6 @@ __qam_fremove(dbp, pgnoaddr)
|
||||
if (LOGGING_ON(dbenv) && (ret = __log_flush(dbenv, NULL)) != 0)
|
||||
goto err;
|
||||
|
||||
- mpf = array->mpfarray[offset].mpf;
|
||||
(void)__memp_set_flags(mpf, DB_MPOOL_UNLINK, 1);
|
||||
/* Someone could be real slow, let them close it down. */
|
||||
if (array->mpfarray[offset].pinref != 0)
|
||||
diff -pNur db-4.4.20.orig/txn/txn.c db-4.4.20/txn/txn.c
|
||||
--- db-4.4.20.orig/txn/txn.c 2005-11-01 14:50:03.000000000 +0000
|
||||
+++ db-4.4.20/txn/txn.c 2006-08-03 14:31:20.215321609 +0000
|
||||
@@ -1049,12 +1049,14 @@ __txn_set_name(txn, name)
|
||||
return (ret);
|
||||
memcpy(txn->name, name, len);
|
||||
|
||||
+ TXN_SYSTEM_LOCK(dbenv);
|
||||
if (td->name != INVALID_ROFF) {
|
||||
__db_shalloc_free(
|
||||
&mgr->reginfo, R_ADDR(&mgr->reginfo, td->name));
|
||||
td->name = INVALID_ROFF;
|
||||
}
|
||||
if ((ret = __db_shalloc(&mgr->reginfo, len, 0, &p)) != 0) {
|
||||
+ TXN_SYSTEM_UNLOCK(dbenv);
|
||||
__db_err(dbenv,
|
||||
"Unable to allocate memory for transaction name");
|
||||
|
||||
@@ -1063,6 +1065,7 @@ __txn_set_name(txn, name)
|
||||
|
||||
return (ret);
|
||||
}
|
||||
+ TXN_SYSTEM_UNLOCK(dbenv);
|
||||
td->name = R_OFFSET(&mgr->reginfo, p);
|
||||
memcpy(p, name, len);
|
||||
|
||||
Reference in New Issue
Block a user