From 013f3a9e58a973219dcf5667c7f912b1ec85d516 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sun, 30 May 2004 18:03:19 +0000 Subject: [PATCH] - official patches for db-4.2.52 1227f5f9ff43d48b5b1759e113a1c2d7 patch.4.2.52.1 3da7efd8d29919a9113e2f6f5166f5b7 patch.4.2.52.2 Changed files: patch.4.2.52.1 -> 1.1 patch.4.2.52.2 -> 1.1 --- patch.4.2.52.1 | 36 ++++++++++++++++++++++++++++++++++++ patch.4.2.52.2 | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 patch.4.2.52.1 create mode 100644 patch.4.2.52.2 diff --git a/patch.4.2.52.1 b/patch.4.2.52.1 new file mode 100644 index 0000000..474cb87 --- /dev/null +++ b/patch.4.2.52.1 @@ -0,0 +1,36 @@ +*** mp/mp_fget.c.orig 25 Sep 2003 02:15:16 -0000 11.81 +--- mp/mp_fget.c 9 Dec 2003 19:06:28 -0000 11.82 +*************** +*** 440,446 **** + c_mp->stat.st_pages--; + alloc_bhp = NULL; + R_UNLOCK(dbenv, &dbmp->reginfo[n_cache]); +- MUTEX_LOCK(dbenv, &hp->hash_mutex); + + /* + * We can't use the page we found in the pool if DB_MPOOL_NEW +--- 440,445 ---- +*************** +*** 455,460 **** +--- 454,462 ---- + b_incr = 0; + goto alloc; + } ++ ++ /* We can use the page -- get the bucket lock. */ ++ MUTEX_LOCK(dbenv, &hp->hash_mutex); + break; + case SECOND_MISS: + /* +*** mp/mp_fput.c.orig 30 Sep 2003 17:12:00 -0000 11.48 +--- mp/mp_fput.c 13 Dec 2003 00:08:29 -0000 11.49 +*************** +*** 285,290 **** +--- 285,291 ---- + bhp != NULL; bhp = SH_TAILQ_NEXT(bhp, hq, __bh)) + if (bhp->priority != UINT32_T_MAX && + bhp->priority > MPOOL_BASE_DECREMENT) ++ bhp->priority -= MPOOL_BASE_DECREMENT; + MUTEX_UNLOCK(dbenv, &hp->hash_mutex); + } + } diff --git a/patch.4.2.52.2 b/patch.4.2.52.2 new file mode 100644 index 0000000..3dc13c1 --- /dev/null +++ b/patch.4.2.52.2 @@ -0,0 +1,45 @@ +*** lock/lock.c.save 2004-01-30 10:48:33.000000000 -0800 +--- lock/lock.c 2004-01-30 10:55:58.000000000 -0800 +*************** +*** 2216,2226 **** + dp = (u_int8_t *)dp + \ + sizeof(db_pgno_t); \ + } while (0) +! #define COPY_OBJ(dp, obj) do { \ +! memcpy(dp, obj->data, obj->size); \ +! dp = (u_int8_t *)dp + \ +! ALIGN(obj->size, \ +! sizeof(u_int32_t)); \ + } while (0) + + #define GET_COUNT(dp, count) do { \ +--- 2216,2227 ---- + dp = (u_int8_t *)dp + \ + sizeof(db_pgno_t); \ + } while (0) +! #define COPY_OBJ(dp, obj) do { \ +! memcpy(dp, \ +! (obj)->data, (obj)->size); \ +! dp = (u_int8_t *)dp + \ +! ALIGN((obj)->size, \ +! sizeof(u_int32_t)); \ + } while (0) + + #define GET_COUNT(dp, count) do { \ +*************** +*** 2339,2345 **** + for (i = 0; i < nlocks; i = j) { + PUT_PCOUNT(dp, obj[i].ulen); + PUT_SIZE(dp, obj[i].size); +! COPY_OBJ(dp, obj); + lock = (DB_LOCK_ILOCK *)obj[i].data; + for (j = i + 1; j <= i + obj[i].ulen; j++) { + lock = (DB_LOCK_ILOCK *)obj[j].data; +--- 2340,2346 ---- + for (i = 0; i < nlocks; i = j) { + PUT_PCOUNT(dp, obj[i].ulen); + PUT_SIZE(dp, obj[i].size); +! COPY_OBJ(dp, &obj[i]); + lock = (DB_LOCK_ILOCK *)obj[i].data; + for (j = i + 1; j <= i + obj[i].ulen; j++) { + lock = (DB_LOCK_ILOCK *)obj[j].data; -- 2.43.0