Author: dnicholson
Date: 2006-08-02 07:19:44 -0600 (Wed, 02 Aug 2006)
New Revision: 1616

Added:
   trunk/db/db-4.4.20-trap-2.patch
Log:
Rediffed upstream db patches to match LFS patches policy.


Added: trunk/db/db-4.4.20-trap-2.patch
===================================================================
--- trunk/db/db-4.4.20-trap-2.patch                             (rev 0)
+++ trunk/db/db-4.4.20-trap-2.patch     2006-08-02 13:19:44 UTC (rev 1616)
@@ -0,0 +1,56 @@
+Submitted By: Bruce Dubbs <bdubbs 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: Fix bugs that could cause traps or hangs.
+
+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-02 13:12:41.630687746 +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-02 13:12:41.632686947 +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);
+ 

-- 
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to