summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/rpm/rpm/rpm-db_buffer_small.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/rpm/rpm/rpm-db_buffer_small.patch')
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-db_buffer_small.patch77
1 files changed, 0 insertions, 77 deletions
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-db_buffer_small.patch b/meta/recipes-devtools/rpm/rpm/rpm-db_buffer_small.patch
deleted file mode 100644
index 16b8e30a1d..0000000000
--- a/meta/recipes-devtools/rpm/rpm/rpm-db_buffer_small.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-In certain cases with BerkleyDB 5.3.x we are getting the error:
-
-db3.c:1443: dbcursor->pget(-30999): BDB0063 DB_BUFFER_SMALL: User memory too small for return value
-
-See https://bugs.launchpad.net/rpm/+bug/934420 for more information.
-
-It appears to be some type of a bug in the BerkleyDB 5.3.x. In an attempt
-to workaround the problem, when we encounter this situation we attempt
-to adjust the size of the mmap buffer until the call works, or we
-end up trying 10 times. The new size is either the updated vp->size
-from the failed pget call, or the previous size + 1024.
-
-If DBI debugging is enabled, additional diagnostics are printed, otherwise
-a basic retry and success message is added to show that the failure was
-resolved.
-
-Upstream-Status: Inappropriate (workaround)
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-Index: rpm-5.4.14/rpmdb/rpmdb.c
-===================================================================
---- rpm-5.4.14.orig/rpmdb/rpmdb.c
-+++ rpm-5.4.14/rpmdb/rpmdb.c
-@@ -2212,8 +2212,12 @@ static int rpmmiGet(dbiIndex dbi, DBC *
- vp->flags |= DB_DBT_USERMEM;
- rc = dbiGet(dbi, dbcursor, kp, vp, flags);
- if (rc == DB_BUFFER_SMALL) {
-+ int retry = 0;
-+ size_t origlen = vp->size;
- size_t uhlen = vp->size;
-- void * uh = mmap(NULL, uhlen, _prot, _flags, _fdno, _off);
-+ void * uh;
-+retry_get:
-+ uh = mmap(NULL, uhlen, _prot, _flags, _fdno, _off);
- if (uh == NULL || uh == (void *)-1)
- fprintf(stderr,
- "==> mmap(%p[%u], 0x%x, 0x%x, %d, 0x%x) error(%d): %s\n",
-@@ -2235,6 +2239,25 @@ static int rpmmiGet(dbiIndex dbi, DBC *
- if (munmap(uh, uhlen) != 0)
- fprintf(stderr, "==> munmap(%p[%u]) error(%d): %s\n",
- uh, (unsigned)uhlen, errno, strerror(errno));
-+ /* We want to be sure to limit the number of retry attempts to avoid a loop! */
-+ if (rc == DB_BUFFER_SMALL && retry < 10) {
-+ /* If we got a largr vp-size back, use that, otherwise increment the size by 1k */
-+ uhlen = vp->size > uhlen ? vp->size : uhlen + 1024;
-+ retry++;
-+ if ((dbi)->dbi_debug)
-+ fprintf(stderr, "==> DB_BUFFER_SMALL orig requested (%d), configured (%d), forcing larger buffer (%d), new size (%d)\n",
-+ origlen, vp->ulen, uhlen, vp->size);
-+ else
-+ fprintf(stderr, "==> retry (%d) db3cpget (%d)\n", retry, uhlen);
-+ goto retry_get;
-+ }
-+ }
-+ if (retry) {
-+ if ((dbi)->dbi_debug)
-+ fprintf(stderr, "==> success orig requested (%d), configured buffer (%d), buffer (%d), size after dbiGet (%d)\n",
-+ origlen, vp->ulen, uhlen, vp->size);
-+ else
-+ fprintf(stderr, "==> success\n");
- }
- }
- } else
-Index: rpm-5.4.14/rpmdb/db3.c
-===================================================================
---- rpm-5.4.14.orig/rpmdb/db3.c
-+++ rpm-5.4.14/rpmdb/db3.c
-@@ -1509,7 +1509,7 @@ assert(db != NULL);
- #endif
- }
-
--DBIDEBUG(dbi, (stderr, "<-- %s(%p,%p,%p,%p,%p,0x%x) rc %d %s%s\n", __FUNCTION__, dbi, dbcursor, key, pkey, data, flags, rc, _DBCFLAGS(flags), _KEYDATA(key, pkey, data, NULL)));
-+DBIDEBUG(dbi, (stderr, "<-- %s(%p,%p,%p,%p,%p,0x%x) rc %d %s%s\n", __FUNCTION__, dbi, dbcursor, key, pkey, data, flags, rc, _DBCFLAGS(flags), _KEYDATA(key, pkey, rc == DB_BUFFER_SMALL ? NULL : data, NULL)));
- return rc;
- }
- /*@=mustmod@*/