- isolate cdb access configuration (experimental, use at your own risk).

- fix: hard fail on locked dbopen if CDB locking not in use.
- fix: dbconfig with mp_mmapsize=16Mb/mp_size=1Mb for
  "everything ENOSPC" failure check.

CVS patchset: 4942
CVS date: 2001/07/14 20:09:56
This commit is contained in:
jbj 2001-07-14 20:09:56 +00:00
parent cfa46ad5cb
commit 77d49ea5a2
8 changed files with 51 additions and 25 deletions

View File

@ -165,6 +165,10 @@
- document more popt aliases for --help usage.
- remove --tarbuild from man page(s), use -t[abpcils] instead (#48666).
- fix: scope multi-mode options like --nodeps correctly (#48825).
- isolate cdb access configuration (experimental, use at your own risk).
- fix: hard fail on locked dbopen if CDB locking not in use.
- fix: dbconfig with mp_mmapsize=16Mb/mp_size=1Mb for
"everything ENOSPC" failure check.
4.0 -> 4.0.[12]
- add doxygen and lclint annotations most everywhere.

View File

@ -15,7 +15,7 @@ AC_PREREQ(2.12) dnl Minimum Autoconf version required.
dnl XXX AM_MAINTAINER_MODE
dnl Set of available languages.
ALL_LINGUAS="cs da de en_RN es eu_ES fi fr gl hu id is it ja ko no pl pt pt_BR ro ru sk sl sr sv tr uk wa zh zh_CN.GB2312"
ALL_LINGUAS="cs da de en_RN es eu_ES fi fr gl.old hu id is it ja ko no pl pt pt_BR ro ru sk sl sr sv tr uk wa zh zh_CN.GB2312"
LIBOBJS=

View File

@ -1,7 +1,7 @@
#/*! \page config_macros Default configuration: /usr/lib/rpm/macros
# \verbatim
#
# $Id: macros.in,v 1.84 2001/07/10 17:59:11 jbj Exp $
# $Id: macros.in,v 1.85 2001/07/14 20:09:56 jbj Exp $
#
# This is a global RPM configuration file. All changes made here will
# be lost when the rpm package is upgraded. Any per-system configuration
@ -385,8 +385,11 @@
#%__dbi_other usedbenv create joinenv mpool txn log \
# mp_mmapsize=8Mb mp_size=512Kb verify usecursors
# XXX enable at your own risk, CDB access to rpmdb isn't cooked yet.
#%__dbi_cdb create joinenv cdb mpool
# XXX The "traditional" rpmdb shared/exclusive fcntl(2) lock on Packages model:
%__dbi_other verify usecursors
%__dbi_other verify usecursors %{?__dbi_cdb}
# Note: adding nofsync here speeds up --rebuilddb a lot.
%__dbi_rebuild nofsync !log !txn !cdb

View File

@ -4,6 +4,9 @@
%define with_internal_db @WITH_INTERNAL_DB@ %{nil}
%define strip_binaries 1
# XXX enable at your own risk, CDB access to rpmdb isn't cooked yet.
%define enable_cdb create cdb
# XXX legacy requires './' payload prefix to be omitted from rpm packages.
%define _noPayloadPrefix 1
@ -147,12 +150,16 @@ mkdir -p $RPM_BUILD_ROOT/etc/rpm
cat << E_O_F > $RPM_BUILD_ROOT/etc/rpm/macros.db1
%%_dbapi 1
E_O_F
cat << E_O_F > $RPM_BUILD_ROOT/etc/rpm/macros.cdb
%{?enable_cdb:#%%__dbi_cdb %{enable_cdb}}
E_O_F
mkdir -p $RPM_BUILD_ROOT/var/lib/rpm
for dbi in \
Basenames Conflictname Dirnames Group Installtid Name Providename \
Provideversion Removetid Requirename Requireversion Triggername \
Packages __db.001 __db.002 __db.003 __db.004
Packages __db.001 __db.002 __db.003 __db.004 __db.005 __db.006 __db.007 \
__db.008 __db.009
do
touch $RPM_BUILD_ROOT/var/lib/rpm/$dbi
done
@ -238,14 +245,13 @@ fi
%config(noreplace,missingok) /etc/cron.daily/rpm
%config(noreplace,missingok) /etc/logrotate.d/rpm
%dir /etc/rpm
%config(noreplace,missingok) /etc/rpm/macros.db1
%config(noreplace,missingok) /etc/rpm/macros.*
%attr(0755, @RPMUSER@, @RPMGROUP@) %dir /var/lib/rpm
%define rpmdbattr %attr(0644, @RPMUSER@, @RPMGROUP@) %verify(not md5 size mtime) %ghost %config(missingok,noreplace)
%rpmdbattr /var/lib/rpm/Basenames
%rpmdbattr /var/lib/rpm/Conflictname
%rpmdbattr /var/lib/rpm/__db.001
%rpmdbattr /var/lib/rpm/__db.002
%rpmdbattr /var/lib/rpm/__db.0*
%rpmdbattr /var/lib/rpm/Dirnames
%rpmdbattr /var/lib/rpm/Group
%rpmdbattr /var/lib/rpm/Installtid

View File

@ -1050,13 +1050,15 @@ static int db3open(/*@keep@*/ rpmdb rpmdb, int rpmtag, dbiIndex * dbip)
rc = fcntl(fdno, F_SETLK, (void *) &l);
if (rc) {
rpmError(
(!dbi->dbi_use_dbenv ? RPMERR_FLOCK : RPMWARN_FLOCK),
/* Warning only if using CDB locking. */
rc = ((dbi->dbi_use_dbenv &&
(dbi->dbi_eflags & DB_INIT_CDB))
? 0 : 1);
rpmError( (rc ? RPMERR_FLOCK : RPMWARN_FLOCK),
_("cannot get %s lock on %s/%s\n"),
((dbi->dbi_mode & (O_RDWR|O_WRONLY))
? _("exclusive") : _("shared")),
dbhome, (dbfile ? dbfile : ""));
rc = (!dbi->dbi_use_dbenv ? 1 : 0);
} else if (dbfile) {
rpmMessage(RPMMESS_DEBUG,
_("locked db index %s/%s\n"),

View File

@ -487,8 +487,8 @@ dbiIndex db3New(rpmdb rpmdb, int rpmtag)
if (!dbi->dbi_use_dbenv) { /* db3 dbenv is always used now. */
dbi->dbi_use_dbenv = 1;
dbi->dbi_eflags |= (DB_INIT_MPOOL|DB_JOINENV);
dbi->dbi_mp_mmapsize = 8 * 1024 * 1024;
dbi->dbi_mp_size = 512 * 1024;
dbi->dbi_mp_mmapsize = 16 * 1024 * 1024;
dbi->dbi_mp_size = 1 * 1024 * 1024;
dbi->dbi_tear_down = 1;
}

View File

@ -869,19 +869,30 @@ static int openDatabase(/*@null@*/ const char * prefix,
int minimal = flags & RPMDB_FLAG_MINIMAL;
if (!_initialized || dbiTagsMax == 0) {
char * filename;
int i;
i = sizeof("//__db.000");
if (prefix) i += strlen(prefix);
if (dbpath) i += strlen(dbpath);
filename = alloca(i);
for (i = 0; i < 16; i++) {
sprintf(filename, "%s/%s/__db.%03d",
(prefix ? prefix : ""), (dbpath ? dbpath : ""), i);
(void) rpmCleanPath(filename);
(void) unlink(filename);
#if 0
static int _enable_cdb = -1;
/* XXX hack in suoport for CDB, otherwise nuke the state. */
if (_enable_cdb < 0)
_enable_cdb = rpmExpandNumeric("%{?__dbi_cdb:1}");
if (!_enable_cdb) {
char * filename;
int i;
i = sizeof("//__db.000");
if (prefix) i += strlen(prefix);
if (dbpath) i += strlen(dbpath);
filename = alloca(i);
for (i = 0; i < 16; i++) {
sprintf(filename, "%s/%s/__db.%03d",
(prefix ? prefix : ""), (dbpath ? dbpath : ""), i);
(void) rpmCleanPath(filename);
(void) unlink(filename);
}
}
#endif
dbiTagsInit();
_initialized++;
}

View File

@ -1,7 +1,7 @@
#/*! \page config_rpmrc Default configuration: /usr/lib/rpm/rpmrc
# \verbatim
#
# $Id: rpmrc.in,v 2.38 2001/06/19 11:38:51 jbj Exp $
# $Id: rpmrc.in,v 2.39 2001/07/14 20:09:56 jbj Exp $
#
# This is a global RPM configuration file. All changes made here will
# be lost when the rpm package is upgraded. Any per-system configuration
@ -310,7 +310,7 @@ buildarch_compat: ia64: noarch
buildarch_compat: s390: noarch
buildarch_compat: s390x: noarch
macrofiles: @RPMCONFIGDIR@/macros:@RPMCONFIGDIR@/%{_target}/macros:@SYSCONFIGDIR@/macros.specspo:@SYSCONFIGDIR@/macros.db1:@SYSCONFIGDIR@/macros:@SYSCONFIGDIR@/%{_target}/macros:~/.rpmmacros
macrofiles: @RPMCONFIGDIR@/macros:@RPMCONFIGDIR@/%{_target}/macros:@SYSCONFIGDIR@/macros.specspo:@SYSCONFIGDIR@/macros.db1:@SYSCONFIGDIR@/macros.cdb:@SYSCONFIGDIR@/macros:@SYSCONFIGDIR@/%{_target}/macros:~/.rpmmacros
# \endverbatim
#*/