SHA256
1
0
forked from pool/lmdb

Accepting request 688581 from systemsmanagement

OBS-URL: https://build.opensuse.org/request/show/688581
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/lmdb?expand=0&rev=15
This commit is contained in:
Dominique Leuenberger 2019-04-01 10:32:32 +00:00 committed by Git OBS Bridge
commit e614b802ba
6 changed files with 25 additions and 75 deletions

View File

@ -1,59 +0,0 @@
From 5e51a5b9f41880cac3d1bf621630de80e15de224 Mon Sep 17 00:00:00 2001
From: Howard Chu <hyc@openldap.org>
Date: Fri, 22 Jun 2018 16:30:13 +0100
Subject: [PATCH] ITS#8756 remove loose pg from dirty list in freelist_save
---
libraries/liblmdb/mdb.c | 33 ++++++++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
index d9e7c5e1e..77c6ecd89 100644
--- a/libraries/liblmdb/mdb.c
+++ b/libraries/liblmdb/mdb.c
@@ -3094,10 +3094,41 @@ mdb_freelist_save(MDB_txn *txn)
* we may be unable to return them to me_pghead.
*/
MDB_page *mp = txn->mt_loose_pgs;
+ MDB_ID2 *dl = txn->mt_u.dirty_list;
+ unsigned x;
if ((rc = mdb_midl_need(&txn->mt_free_pgs, txn->mt_loose_count)) != 0)
return rc;
- for (; mp; mp = NEXT_LOOSE_PAGE(mp))
+ for (; mp; mp = NEXT_LOOSE_PAGE(mp)) {
mdb_midl_xappend(txn->mt_free_pgs, mp->mp_pgno);
+ /* must also remove from dirty list */
+ if (txn->mt_flags & MDB_TXN_WRITEMAP) {
+ for (x=1; x<=dl[0].mid; x++)
+ if (dl[x].mid == mp->mp_pgno)
+ break;
+ mdb_tassert(txn, x <= dl[0].mid);
+ } else {
+ x = mdb_mid2l_search(dl, mp->mp_pgno);
+ mdb_tassert(txn, dl[x].mid == mp->mp_pgno);
+ }
+ dl[x].mptr = NULL;
+ mdb_dpage_free(env, mp);
+ }
+ {
+ /* squash freed slots out of the dirty list */
+ unsigned y;
+ for (y=1; dl[y].mptr && y <= dl[0].mid; y++);
+ if (y <= dl[0].mid) {
+ for(x=y, y++;;) {
+ while (!dl[y].mptr && y <= dl[0].mid) y++;
+ if (y > dl[0].mid) break;
+ dl[x++] = dl[y++];
+ }
+ dl[0].mid = x-1;
+ } else {
+ /* all slots freed */
+ dl[0].mid = 0;
+ }
+ }
txn->mt_loose_pgs = NULL;
txn->mt_loose_count = 0;
}
--
2.19.0

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f3927859882eb608868c8c31586bb7eb84562a40a6bf5cc3e13b6b564641ea28
size 143468

3
LMDB_0.9.23.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:abf42e91f046787ed642d9eb21812a5c473f3ba5854124484d16eadbe0aa9c81
size 143813

View File

@ -1 +1 @@
liblmdb-0_9_22 liblmdb-0_9_23

View File

@ -1,3 +1,18 @@
-------------------------------------------------------------------
Mon Mar 25 21:10:07 UTC 2019 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
- LMDB 0.9.23 Release (2018/12/19)
* ITS#8756 Fix loose pages in dirty list
* ITS#8831 Fix mdb_load flag init
* ITS#8844 Fix mdb_env_close in forked process
* Documentation
+ ITS#8857 mdb_cursor_del doesn't invalidate cursor
+ ITS#8908 GET_MULTIPLE etc don't change passed in key
- Drop upstream 0001-ITS-8756-remove-loose-pg-from-dirty-list-in-freelist.patch
- Cleanup:
* Use %license, drop %defattr
* Use https for Url tag
------------------------------------------------------------------- -------------------------------------------------------------------
Sat Oct 6 14:18:37 UTC 2018 - Stefan Brüns <stefan.bruens@rwth-aachen.de> Sat Oct 6 14:18:37 UTC 2018 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

View File

@ -1,7 +1,7 @@
# #
# spec file for package lmdb # spec file for package lmdb
# #
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -20,10 +20,10 @@ Name: lmdb
Summary: Lightning Memory-Mapped Database Manager Summary: Lightning Memory-Mapped Database Manager
License: OLDAP-2.8 License: OLDAP-2.8
Group: Productivity/Databases/Tools Group: Productivity/Databases/Tools
%define lname liblmdb-0_9_22 %define lname liblmdb-0_9_23
Version: 0.9.22 Version: 0.9.23
Release: 0 Release: 0
Url: http://symas.com/mdb/ Url: https://symas.com/mdb/
#Git-Clone: git://git.openldap.org/openldap mdb.master #Git-Clone: git://git.openldap.org/openldap mdb.master
Source: https://github.com/LMDB/lmdb/archive/LMDB_%version.tar.gz Source: https://github.com/LMDB/lmdb/archive/LMDB_%version.tar.gz
@ -35,8 +35,6 @@ Patch1: 0001-Add-extra-tools-and-CFEngine-modifications-for-LMDB.patch
Patch2: liblmdb-implicit-decl.patch Patch2: liblmdb-implicit-decl.patch
# PATCH-FIX-OPENSUSE - Build and link to shared library # PATCH-FIX-OPENSUSE - Build and link to shared library
Patch3: Makefile-build-use-shared-lib.patch Patch3: Makefile-build-use-shared-lib.patch
# PATCH-FIX-UPSTREAM - Fix crash due to failed assertion, freed pages ended up on the dirty page list twice
Patch4: 0001-ITS-8756-remove-loose-pg-from-dirty-list-in-freelist.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?rhel_version} == 700 %if 0%{?rhel_version} == 700
@ -80,7 +78,7 @@ structure is multi-versioned, and data pages use a copy-on-write
strategy, which also provides resistance to corruption and eliminates strategy, which also provides resistance to corruption and eliminates
the need for any recovery procedures. The database is exposed in a the need for any recovery procedures. The database is exposed in a
memory map, requiring no page cache layer of its own. memory map, requiring no page cache layer of its own.
This package contains the files needed to compile programs that use This package contains the files needed to compile programs that use
the liblmdb library. the liblmdb library.
@ -89,7 +87,6 @@ the liblmdb library.
%patch1 -p1 %patch1 -p1
%patch2 -p1 %patch2 -p1
%patch3 -p1 %patch3 -p1
%patch4 -p1
%build %build
cd libraries/liblmdb cd libraries/liblmdb
@ -109,19 +106,16 @@ ln -s %{_libdir}/liblmdb-%{version}.so %{buildroot}%{_libdir}/liblmdb.so
%postun -n %lname -p /sbin/ldconfig %postun -n %lname -p /sbin/ldconfig
%files %files
%defattr(-,root,root)
%doc libraries/liblmdb/CHANGES %doc libraries/liblmdb/CHANGES
%doc libraries/liblmdb/COPYRIGHT %doc libraries/liblmdb/COPYRIGHT
%doc libraries/liblmdb/LICENSE %license libraries/liblmdb/LICENSE
%{_bindir}/* %{_bindir}/*
%doc %{_mandir}/man1/*.1.gz %doc %{_mandir}/man1/*.1.gz
%files -n %lname %files -n %lname
%defattr(-,root,root)
%_libdir/liblmdb-%version.so %_libdir/liblmdb-%version.so
%files devel %files devel
%defattr(-,root,root)
%_includedir/* %_includedir/*
%_libdir/liblmdb.so %_libdir/liblmdb.so