[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Per Øyvind Karlsen Root: /v/rpm/cvs Email: pkarl...@rpm5.org Module: rpm Date: 25-Jan-2011 15:50:56 Branch: HEAD Handle: 2011012514505600 Modified files: rpm/rpmdb db3.c Log: sync max number of locks with DB_CONFIG Summary: RevisionChanges Path 1.161 +1 -1 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.160 -r1.161 db3.c --- rpm/rpmdb/db3.c 17 Jan 2011 23:29:53 - 1.160 +++ rpm/rpmdb/db3.c 25 Jan 2011 14:50:56 - 1.161 @@ -899,7 +899,7 @@ } /* Locking: */ -#define _RPMDB_NLOCKS 8192 +#define _RPMDB_NLOCKS 16384 if (eflags DB_INIT_LOCK) { uint32_t _lk_max_lockers = _RPMDB_NLOCKS; uint32_t _lk_max_locks = _RPMDB_NLOCKS; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Per Øyvind Karlsen Root: /v/rpm/cvs Email: pkarl...@rpm5.org Module: rpm Date: 18-Jan-2011 00:29:54 Branch: HEAD Handle: 2011011723295300 Modified files: rpm/rpmdb db3.c Log: always set log directory Summary: RevisionChanges Path 1.160 +9 -11 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.159 -r1.160 db3.c --- rpm/rpmdb/db3.c 13 Jan 2011 06:39:05 - 1.159 +++ rpm/rpmdb/db3.c 17 Jan 2011 23:29:53 - 1.160 @@ -920,20 +920,18 @@ } /* Logging: */ -if (eflags DB_INIT_LOG) { - const char *logdir; +const char *logdir; - logdir = rpmGetPath(dbhome, /, log, NULL); - /* - * Create the /var/lib/rpm/log directory if it doesn't exist (root only). - */ - rpmioMkpath(logdir, 0755, getuid(), getgid()); +logdir = rpmGetPath(dbhome, /, log, NULL); +/* + * Create the /var/lib/rpm/log directory if it doesn't exist (root only). + */ +rpmioMkpath(logdir, 0755, getuid(), getgid()); - xx = dbenv-set_lg_dir(dbenv, logdir); - xx = cvtdberr(dbi, dbenv-set_lg_dir, xx, _debug); +xx = dbenv-set_lg_dir(dbenv, logdir); +xx = cvtdberr(dbi, dbenv-set_lg_dir, xx, _debug); - _free(logdir); -} +_free(logdir); /* Memory pool: */ if (eflags DB_INIT_MPOOL) { @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 13-Sep-2010 00:23:56 Branch: HEAD Handle: 201009135600 Modified files: rpm/rpmdb db3.c Log: - isolate sunrpc code w test for DB_RPCCLIENT. Summary: RevisionChanges Path 1.154 +11 -8 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.153 -r1.154 db3.c --- rpm/rpmdb/db3.c 17 Jul 2010 19:56:48 - 1.153 +++ rpm/rpmdb/db3.c 12 Sep 2010 22:23:56 - 1.154 @@ -32,10 +32,6 @@ extern int logio_dispatch(DB_ENV * dbenv, DBT * dbt, DB_LSN * lsn, db_recops op) /*...@*/; -#if !defined(DB_CLIENT) /* XXX db-4.2.42 retrofit */ -#define DB_CLIENT DB_RPCCLIENT -#endif - #define DBIDEBUG(_dbi, _list) if ((_dbi)-dbi_debug) fprintf _list /*...@access rpmdb @*/ @@ -780,8 +776,10 @@ dbhome, dbfile, prDbiOpenFlags(eflags, 1)); /* XXX Can't do RPC w/o host. */ +#if defined(DB_RPCCLIENT) if (dbi-dbi_host == NULL) - dbi-dbi_ecflags = ~DB_CLIENT; + dbi-dbi_ecflags = ~DB_RPCCLIENT; +#endif rc = db_env_create(dbenv, dbi-dbi_ecflags); rc = cvtdberr(dbi, db_env_create, rc, _debug); @@ -809,7 +807,8 @@ /* dbenv-set_paniccall(???) */ -if ((dbi-dbi_ecflags DB_CLIENT) dbi-dbi_host) { +#if defined(DB_RPCCLIENT) +if ((dbi-dbi_ecflags DB_RPCCLIENT) dbi-dbi_host) { const char * home; int retry = 0; @@ -825,7 +824,9 @@ break; (void) sleep(15); } -} else { +} else +#endif +{ { size_t _lo = 16 * 1024 * 1024; size_t _hi = 512 * 1024 * 1024; @@ -2475,7 +2476,9 @@ * glibc/kernel combinations. */ if (rc == 0 dbi-dbi_lockdbfd - !((dbi-dbi_ecflags DB_CLIENT) dbi-dbi_host) +#if defined(DB_RPCCLIENT) + !((dbi-dbi_ecflags DB_RPCCLIENT) dbi-dbi_host) +#endif (!dbi-dbi_use_dbenv || _lockdbfd++ == 0)) { int fdno = -1; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c fprint.c header.c poptDB.c rpmd...
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 29-Jan-2010 22:02:32 Branch: HEAD Handle: 2010012921023100 Modified files: rpm/rpmdb db3.c dbconfig.c fprint.c header.c poptDB.c rpmdb.c rpmdb.h Log: - splint fiddles. Summary: RevisionChanges Path 1.150 +6 -0 rpm/rpmdb/db3.c 1.77+2 -2 rpm/rpmdb/dbconfig.c 1.36+16 -9 rpm/rpmdb/fprint.c 1.196 +1 -1 rpm/rpmdb/header.c 1.17+2 -0 rpm/rpmdb/poptDB.c 1.383 +16 -8 rpm/rpmdb/rpmdb.c 1.139 +1 -2 rpm/rpmdb/rpmdb.h patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.149 -r1.150 db3.c --- rpm/rpmdb/db3.c 27 Jan 2010 20:08:18 - 1.149 +++ rpm/rpmdb/db3.c 29 Jan 2010 21:02:31 - 1.150 @@ -795,11 +795,13 @@ if (dbenv == NULL || rc) goto errxit; +/*...@-noeffectuncon@*/ /*...@-castfcnptr@*/ dbenv-set_errcall(dbenv, (void *)rpmdb-db_errcall); /*...@=castfcnptr@*/ dbenv-set_errfile(dbenv, rpmdb-db_errfile); dbenv-set_errpfx(dbenv, rpmdb-db_errpfx); +/*...@=noeffectuncon@*/ /* 4.1: dbenv-set_alloc(???) */ /* 4.1: dbenv-set_data_dir(???) */ @@ -937,7 +939,9 @@ #if (DB_VERSION_MAJOR == 4 DB_VERSION_MINOR = 5) /* XXX capture dbenv-falchk output on stderr. */ +/*...@-noeffectuncon@*/ dbenv-set_msgfile(dbenv, rpmdb-db_errfile); +/*...@=noeffectuncon@*/ if (dbi-dbi_thread_count = 8) { xx = dbenv-set_thread_count(dbenv, dbi-dbi_thread_count); xx = cvtdberr(dbi, dbenv-set_thread_count, xx, _debug); @@ -1497,6 +1501,7 @@ { int rc = ENOTSUP;; +#if !defined(__LCLINT__) /*...@-moduncon@*/ /* FIX: annotate db3 methods */ #if (DB_VERSION_MAJOR == 4 DB_VERSION_MINOR = 8) DB * db = dbi-dbi_db; @@ -1505,6 +1510,7 @@ rc = db-associate_foreign(db, secondary, callback, flags); #endif /*...@=moduncon@*/ +#endif /* !defined(__LCLINT__) */ rc = cvtdberr(dbi, db-associate_foreign, rc, _debug); if (dbi-dbi_debug || dbisecondary-dbi_debug) { @@ . patch -p0 '@@ .' Index: rpm/rpmdb/dbconfig.c $ cvs diff -u -r1.76 -r1.77 dbconfig.c --- rpm/rpmdb/dbconfig.c 14 Dec 2009 01:52:10 - 1.76 +++ rpm/rpmdb/dbconfig.c 29 Jan 2010 21:02:31 - 1.77 @@ -19,7 +19,7 @@ /*...@access dbiindex...@*/ /*...@unchecked@*/ -int _dbi_debug; +extern int _dbi_debug; #if defined(WITH_DB) || defined(WITH_SQLITE) @@ -439,7 +439,7 @@ /*...@=compmempass =immediatetrans =exportlocal =exportheadervar =t...@*/ static void dbiFini(void * _dbi) - /*...@modifies _dbi @*/ + /*...@*/ { dbiIndex dbi = _dbi; if (dbi) { @@ . patch -p0 '@@ .' Index: rpm/rpmdb/fprint.c $ cvs diff -u -r1.35 -r1.36 fprint.c --- rpm/rpmdb/fprint.c29 Jan 2010 19:23:59 - 1.35 +++ rpm/rpmdb/fprint.c29 Jan 2010 21:02:31 - 1.36 @@ -297,6 +297,7 @@ static inline /*...@null@*/ struct fingerPrint_s * __rpmfiFpsIndex(rpmfi fi, int ix) + /*...@*/ { struct fingerPrint_s * fps = NULL; if (fi != NULL fi-fps != NULL ix = 0 ix (int)fi-fc) { @@ -307,12 +308,14 @@ static inline int __rpmfiFX(rpmfi fi) + /*...@*/ { return (fi != NULL ? fi-i : -1); } static inline int __rpmfiSetFX(rpmfi fi, int fx) + /*...@*/ { int i = -1; @@ -326,6 +329,7 @@ static inline const char * __rpmfiFLink(rpmfi fi) + /*...@*/ { const char * flink = NULL; @@ -338,6 +342,7 @@ static inline rpmfi __rpmteFI(rpmte te, rpmTag tag) + /*...@*/ { /*...@-compdef -refcounttrans -retalias -retexpose -usereleased @*/ if (te == NULL) @@ -362,7 +367,9 @@ * 3) rstrscat(NULL,NULL) returns NULL * 4) *dest and argument strings can overlap */ -static char * rstrscat(char **dest, const char *arg, ...) +static +char * rstrscat(char **dest, const char *arg, ...) + /*...@modifies *dest @*/ { va_list ap; size_t arg_size, dst_size; @@ -437,12 +444,12 @@ current_fp.subDir = endsubdir = NULL; // no subDir for now while (endbasename currentsubdir +
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 27-Jan-2010 21:08:19 Branch: HEAD Handle: 2010012720081800 Modified files: rpm/rpmdb db3.c Log: - db3: fix: revert buggy change to increment _r-size for single keys. Summary: RevisionChanges Path 1.149 +9 -11 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.148 -r1.149 db3.c --- rpm/rpmdb/db3.c 26 Jan 2010 23:40:36 - 1.148 +++ rpm/rpmdb/db3.c 27 Jan 2010 20:08:18 - 1.149 @@ -1826,8 +1826,7 @@ if (he-c == 1) { _ube = _hton_ui(*_u); /* XXX network order integer keys */ /* XXX is it worth avoiding the realloc here? */ - if (loadDBT(_r, he-tag, _ube, _ulen)) - _r-size++; + xx = loadDBT(_r, he-tag, _ube, _ulen); break; } _r-flags = DB_DBT_MULTIPLE | DB_DBT_APPMALLOC; @@ -1854,8 +1853,7 @@ if (he-c == 1) { _ube = _hton_ul(*_u); /* XXX network order integer keys */ /* XXX is it worth avoiding the realloc here? */ - if (loadDBT(_r, he-tag, _u, _ulen)) - _r-size++; + xx = loadDBT(_r, he-tag, _u, _ulen); break; } _r-flags = DB_DBT_MULTIPLE | DB_DBT_APPMALLOC; @@ -1877,21 +1875,21 @@ case RPM_BIN_TYPE: s = he-p.ptr; ns = he-c; /* XXX is it worth avoiding the realloc here? */ - if (ns 0 loadDBT(_r, he-tag, s, ns)) - _r-size++; + if (ns 0) /* No empty keys please. */ + xx = loadDBT(_r, he-tag, s, ns); break; -case RPM_I18NSTRING_TYPE: /* XXX never occurs */ +case RPM_I18NSTRING_TYPE:/* XXX never occurs */ case RPM_STRING_TYPE: s = he-p.str; ns = strlen(s); /* XXX is it worth avoiding the realloc here? */ - if (ns 0 loadDBT(_r, he-tag, s, ns)) - _r-size++; + if (ns 0) /* No empty keys please. */ + xx = loadDBT(_r, he-tag, s, ns); break; case RPM_STRING_ARRAY_TYPE: if (he-c == 1) { s = he-p.argv[0]; ns = strlen(s); - if (ns 0 loadDBT(_r, he-tag, s, ns)) - _r-size++; + if (ns 0) /* No empty keys please. */ + xx = loadDBT(_r, he-tag, s, ns); } else { static double e = 1.0e-4; size_t m = 0; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 29-Dec-2009 23:39:00 Branch: HEAD Handle: 200912292239 Modified files: rpm/rpmdb db3.c Log: - db3: don't bother with DB_IMMUTABLE_KEY performance yet. Summary: RevisionChanges Path 1.144 +4 -0 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.143 -r1.144 db3.c --- rpm/rpmdb/db3.c 29 Dec 2009 04:27:47 - 1.143 +++ rpm/rpmdb/db3.c 29 Dec 2009 22:39:00 - 1.144 @@ -2573,7 +2573,11 @@ dbiIndex Pdbi = NULL; int (*_callback)(DB *, const DBT *, const DBT *, DBT *) = db3Acallback; +#ifdef NOTYET /* XXX KISS for now */ int _flags = DB_IMMUTABLE_KEY; +#else + int _flags = 0; +#endif assert(Ptag == RPMDBI_PACKAGES Ptag != rpmtag); Pdbi = dbiOpen(rpmdb, Ptag, 0); assert(Pdbi != NULL); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c rpmdb.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 17-Dec-2009 04:50:00 Branch: HEAD Handle: 2009121703495900 Modified files: rpm/rpmdb db3.c rpmdb.c Log: - rpmdb: tune the rpmbf parameters to a given {n,e}. Summary: RevisionChanges Path 1.142 +6 -4 rpm/rpmdb/db3.c 1.375 +7 -4 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.141 -r1.142 db3.c --- rpm/rpmdb/db3.c 15 Dec 2009 21:10:23 - 1.141 +++ rpm/rpmdb/db3.c 17 Dec 2009 03:49:59 - 1.142 @@ -1878,10 +1878,12 @@ if (ns 0) /* No empty keys please. */ (void) loadDBT(_r, he-tag, s, ns); } else { - size_t _jiggery = 2;/* XXX todo: Bloom filter tuning? */ - size_t _k = _jiggery * 8; - size_t _m = _jiggery * (3 * he-c * _k) / 2; - rpmbf bf = rpmbfNew(_m, _k, 0); + static double e = 1.0e-4; + size_t m = 0; + size_t k = 0; + rpmbf bf; + rpmbfParams(he-c, e, m, k); + bf = rpmbfNew(m, k, 0); _r-flags = DB_DBT_MULTIPLE | DB_DBT_APPMALLOC; _r-data = A = xcalloc(he-c, sizeof(*A)); @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.374 -r1.375 rpmdb.c --- rpm/rpmdb/rpmdb.c 15 Dec 2009 21:11:26 - 1.374 +++ rpm/rpmdb/rpmdb.c 17 Dec 2009 03:49:59 - 1.375 @@ -2277,10 +2277,13 @@ if (!rc) { int i; if (mi-mi_bf == NULL) { - size_t _jiggery = 2;/* XXX todo: Bloom filter tuning? */ - size_t _k = _jiggery * 8; - size_t _m = _jiggery * (3 * nHdrNums * _k) / 2; - mi-mi_bf = rpmbfNew(_m, _k, 0); + static size_t nRemoves = 8192; /* XXX population estimate */ + static double e = 1.0e-4; + size_t m = 0; + size_t k = 0; + rpmbf bf; + rpmbfParams(nRemoves, e, m, k); + mi-mi_bf = rpmbfNew(m, k, 0); } for (i = 0; i nHdrNums; i++) { uint32_t mi_offset = _hton_ui(hdrNums[i]); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 15-Dec-2009 22:10:23 Branch: HEAD Handle: 2009121521102300 Modified files: rpm/rpmdb db3.c Log: - db3: fiddle with DB_RECOVER automation a bit more. Summary: RevisionChanges Path 1.141 +21 -7 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.140 -r1.141 db3.c --- rpm/rpmdb/db3.c 15 Dec 2009 02:39:12 - 1.140 +++ rpm/rpmdb/db3.c 15 Dec 2009 21:10:23 - 1.141 @@ -784,14 +784,11 @@ if (dbenv == NULL || rc) goto errxit; -/*...@-noeffectuncon@*/ /* FIX: annotate db3 methods */ - /*...@-castfcnptr@*/ dbenv-set_errcall(dbenv, (void *)rpmdb-db_errcall); /*...@=castfcnptr@*/ dbenv-set_errfile(dbenv, rpmdb-db_errfile); dbenv-set_errpfx(dbenv, rpmdb-db_errpfx); -/*...@=noeffectuncon@*/ /* 4.1: dbenv-set_alloc(???) */ /* 4.1: dbenv-set_data_dir(???) */ @@ -860,12 +857,21 @@ uint32_t _lk_max_lockers = 8192; uint32_t _lk_max_locks = 8192; uint32_t _lk_max_objects = 8192; + xx = dbenv-set_lk_max_lockers(dbenv, _lk_max_lockers); xx = cvtdberr(dbi, dbenv-set_lk_max_lockers, xx, _debug); xx = dbenv-set_lk_max_locks(dbenv, _lk_max_locks); xx = cvtdberr(dbi, dbenv-set_lk_max_locks, xx, _debug); xx = dbenv-set_lk_max_objects(dbenv, _lk_max_objects); xx = cvtdberr(dbi, dbenv-set_lk_max_objects, xx, _debug); + +#ifdef NOTYET /* XXX unclear if necessary atm. */ + { uint32_t _max = 8192; + xx = dbenv-mutex_set_max(dbenv, _max); + xx = cvtdberr(dbi, dbenv-mutex_set_max, xx, _debug); + } +#endif + } /* Logging: */ @@ -920,16 +926,21 @@ #if (DB_VERSION_MAJOR == 4 DB_VERSION_MINOR = 5) /* XXX capture dbenv-falchk output on stderr. */ -/*...@-noeffectuncon@*/ dbenv-set_msgfile(dbenv, rpmdb-db_errfile); -/*...@=noeffectuncon@*/ if (dbi-dbi_thread_count = 8) { xx = dbenv-set_thread_count(dbenv, dbi-dbi_thread_count); xx = cvtdberr(dbi, dbenv-set_thread_count, xx, _debug); } #endif -if (eflags DB_RECOVER) eflags |= DB_CREATE; +/* XXX Attempt db_recover -ev (i.e. dbenv w DB_INIT_LOCK) */ +if (eflags DB_RECOVER) { +#ifdef DYING /* XXX this should not be necessary. */ + eflags |= DB_CREATE; +#endif + xx = dbenv-set_verbose(dbenv, DB_VERB_RECOVERY, 1); + xx = cvtdberr(dbi, dbenv-set_verbose, xx, _debug); +} #if (DB_VERSION_MAJOR == 3 DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 4) rc = (dbenv-open)(dbenv, dbhome, eflags, dbi-dbi_perms); @@ -2234,12 +2245,15 @@ default: break; case DB_RUNRECOVERY: + if (getuid() != 0) + break; rpmlog(RPMLOG_NOTICE, _(Re-opening dbenv with DB_RECOVER ...\n)); + /* XXX Attempt db_recover -ev (i.e. dbenv w DB_INIT_LOCK) */ dbi-dbi_eflags |= DB_RECOVER; rc = db_init(dbi, dbhome, dbfile, dbsubfile, dbenv); dbi-dbi_eflags = ~DB_RECOVER; if (rc) { - rpmlog(RPMLOG_ERR, _(\nrecovery failed. Exiting ...\n)); + rpmlog(RPMLOG_NOTICE, _(\nrecovery failed. Exiting ...\n)); exit(EXIT_FAILURE); } rpmlog(RPMLOG_NOTICE, _(.\nrecovery succeeded.\n)); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 13-Dec-2009 17:17:09 Branch: HEAD Handle: 2009121316170900 Modified files: rpm/rpmdb db3.c Log: - rpmdb: attempt to default important tunables, scaling from physmem. Summary: RevisionChanges Path 1.135 +113 -10rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.134 -r1.135 db3.c --- rpm/rpmdb/db3.c 13 Dec 2009 01:04:46 - 1.134 +++ rpm/rpmdb/db3.c 13 Dec 2009 16:17:09 - 1.135 @@ -615,6 +615,68 @@ } #endif +/*==*/ + +/* HAVE_SYS_SYSCTL_H */ +#if defined(HAVE_PHYSMEM_SYSCTL) || defined(HAVE_NCPU_SYSCTL) +#include sys/sysctl.h +#endif + +static uint64_t physmem(void) + /*...@*/ +{ +static uint64_t _physmem = 0; +static int oneshot = 0; + +if (!oneshot) { +#if defined(HAVE_PHYSMEM_SYSCONF) + const long _pagesize = sysconf(_SC_PAGESIZE); + const long _pages = sysconf(_SC_PHYS_PAGES); + if (_pagesize != -1 || _pages != -1) + _physmem = (uint64_t)(_pagesize) * (uint64_t)(_pages); +#elif defined(HAVE_PHYSMEM_SYSCTL) + int name[2] = { CTL_HW, HW_PHYSMEM }; + unsigned long mem; + size_t mem_ptr_size = sizeof(mem); + if (!sysctl(name, 2, mem, mem_ptr_size, NULL, 0)) { + if (mem_ptr_size != sizeof(mem)) { + if (mem_ptr_size == sizeof(unsigned int)) + _physmem = *(unsigned int *)(mem); + } else { + _physmem = mem; + } + } +#endif + oneshot++; +} +return _physmem; +} + +static size_t ncores(void) + /*...@*/ +{ +static size_t _ncores = 1; +static int oneshot = 0; + +if (!oneshot) { +#if defined(HAVE_NCPU_SYSCONF) + const long cpus = sysconf(_SC_NPROCESSORS_ONLN); +#elif defined(HAVE_NCPU_SYSCTL) + int name[2] = { CTL_HW, HW_NCPU }; + int cpus = 0; + size_t cpus_size = sizeof(cpus); + if (sysctl(name, 2, cpus, cpus_size, NULL, 0) + || cpus_size != sizeof(cpus)) + cpus = 0; +#endif + if (cpus (int)_ncores) + _ncores = (size_t)(cpus); + oneshot++; +} +return _ncores; +} + +/*==*/ /*...@-moduncon@*/ /* FIX: annotate db3 methods */ static int db_init(dbiIndex dbi, const char * dbhome, /*...@null@*/ const char * dbfile, @@ -625,6 +687,8 @@ /*...@modifies dbi, *dbenvp, fileSystem, internalState @*/ { static int oneshot = 0; +uint64_t _physmem = physmem(); +size_t _ncores = ncores(); rpmdb rpmdb = dbi-dbi_rpmdb; DB_ENV *dbenv = NULL; int eflags; @@ -632,6 +696,8 @@ int xx; if (!oneshot) { + rpmlog(RPMLOG_DEBUG, D_(rpmdb: cpus %u physmem %uMb\n), + (unsigned)_ncores, (unsigned)(_physmem/(1024 * 1024))); #if (DB_VERSION_MAJOR == 3 DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 4) xx = db_env_set_func_open((int (*)(const char *, int, ...))Open); xx = cvtdberr(dbi, db_env_set_func_open, xx, _debug); @@ -663,15 +729,6 @@ if (dbi-dbi_host == NULL) dbi-dbi_ecflags = ~DB_CLIENT; -/* XXX Set a default shm_key. */ -if ((dbi-dbi_eflags DB_SYSTEM_MEM) dbi-dbi_shmkey == 0) { -#if defined(HAVE_FTOK) - dbi-dbi_shmkey = ftok(dbhome, 0); -#else - dbi-dbi_shmkey = 0x44631380; -#endif -} - rc = db_env_create(dbenv, dbi-dbi_ecflags); rc = cvtdberr(dbi, db_env_create, rc, _debug); if (dbenv == NULL || rc) @@ -719,6 +776,15 @@ } } else { + { size_t _lo = 16 * 1024 * 1024; + size_t _hi = 512 * 1024 * 1024; + size_t _mp_mmapsize = _physmem / 2; + if (_mp_mmapsize _lo) _mp_mmapsize = _lo; + if (_mp_mmapsize _hi) _mp_mmapsize = _hi; + xx = dbenv-set_mp_mmapsize(dbenv, _mp_mmapsize); + xx = cvtdberr(dbi, dbenv-set_mp_mmapsize, xx, _debug); + } + if (dbi-dbi_tmpdir) { const char * root; const char * tmpdir; @@ -736,8 +802,36 @@ } /* Locking: */ +if (eflags DB_INIT_LOCK) { + uint32_t _lk_max_lockers = 8192; + uint32_t _lk_max_locks = 8192; + uint32_t _lk_max_objects = 8192; + xx =
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 13-Dec-2009 21:15:25 Branch: HEAD Handle: 2009121320152500 Modified files: rpm/rpmdb db3.c Log: - add a note to self. Summary: RevisionChanges Path 1.136 +1 -0 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.135 -r1.136 db3.c --- rpm/rpmdb/db3.c 13 Dec 2009 16:17:09 - 1.135 +++ rpm/rpmdb/db3.c 13 Dec 2009 20:15:25 - 1.136 @@ -1755,6 +1755,7 @@ h = headerLink(rpmdb-db_h); if (h == NULL) { + /* XXX needs PROT_READ somewhen. */ h = headerLoad(data-data); if (h == NULL) { rpmlog(RPMLOG_ERR, @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c rpmdb.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 08-Dec-2009 19:30:02 Branch: HEAD Handle: 2009120818300200 Modified files: rpm/rpmdb db3.c rpmdb.c Log: - rpmdb: cruft up the usual swabbing prior to making integer indices big endian. Summary: RevisionChanges Path 1.130 +63 -0 rpm/rpmdb/db3.c 1.350 +64 -26 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.129 -r1.130 db3.c --- rpm/rpmdb/db3.c 8 Dec 2009 17:46:40 - 1.129 +++ rpm/rpmdb/db3.c 8 Dec 2009 18:30:02 - 1.130 @@ -43,6 +43,69 @@ /*...@access dbiIndex @*/ /*...@access dbiIndexSet @*/ +union _dbswap { +uint64_t ul; +uint32_t ui; +uint16_t us; +uint8_t uc[8]; +}; +static union _dbswap _endian = { .ui = 0x11223344 }; + +static inline uint64_t _ntoh_ul(uint64_t ul) + /*...@*/ +{ +union _dbswap _a; +_a.ul = ul; +if (_endian.uc[0] == 0x44) { + uint8_t _b, *_c = _a.uc; \ + _b = _c[7]; _c[7] = _c[0]; _c[0] = _b; \ + _b = _c[6]; _c[6] = _c[1]; _c[1] = _b; \ + _b = _c[5]; _c[5] = _c[2]; _c[2] = _b; \ + _b = _c[4]; _c[4] = _c[3]; _c[3] = _b; \ +} +return _a.ul; +} +static inline uint64_t _hton_ul(uint64_t ul) + /*...@*/ +{ +return _ntoh_ul(ul); +} + +static inline uint32_t _ntoh_ui(uint32_t ui) + /*...@*/ +{ +union _dbswap _a; +_a.ui = ui; +if (_endian.uc[0] == 0x44) { + uint8_t _b, *_c = _a.uc; \ + _b = _c[3]; _c[3] = _c[0]; _c[0] = _b; \ + _b = _c[2]; _c[2] = _c[1]; _c[1] = _b; \ +} +return _a.ui; +} +static inline uint32_t _hton_ui(uint32_t ui) + /*...@*/ +{ +return _ntoh_ui(ui); +} + +static inline uint16_t _ntoh_us(uint16_t us) + /*...@*/ +{ +union _dbswap _a; +_a.us = us; +if (_endian.uc[0] == 0x44) { + uint8_t _b, *_c = _a.uc; \ + _b = _c[1]; _c[1] = _c[0]; _c[0] = _b; \ +} +return _a.us; +} +static inline uint16_t _hton_us(uint16_t us) + /*...@*/ +{ +return _ntoh_us(us); +} + #ifdef NOTNOW static const char * bfstring(unsigned int x, const char * xbf) { @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.349 -r1.350 rpmdb.c --- rpm/rpmdb/rpmdb.c 8 Dec 2009 15:37:24 - 1.349 +++ rpm/rpmdb/rpmdb.c 8 Dec 2009 18:30:02 - 1.350 @@ -321,34 +321,72 @@ } union _dbswap { -rpmuint32_t ui; -unsigned char uc[4]; +uint64_t ul; +uint32_t ui; +uint16_t us; +uint8_t uc[8]; }; static union _dbswap _endian = { .ui = 0x11223344 }; -#define _DBSWAP(_a) \ - { unsigned char _b, *_c = (_a).uc; \ -_b = _c[3]; _c[3] = _c[0]; _c[0] = _b; \ -_b = _c[2]; _c[2] = _c[1]; _c[1] = _b; \ - } - -static inline uint32_t _ntohl(uint32_t ui) -{ -union _dbswap mi_offset; -mi_offset.ui = ui; -if (_endian.uc[0] == 0x44) - _DBSWAP(mi_offset); -return mi_offset.ui; +static inline uint64_t _ntoh_ul(uint64_t ul) + /*...@*/ +{ +union _dbswap _a; +_a.ul = ul; +if (_endian.uc[0] == 0x44) { + uint8_t _b, *_c = _a.uc; \ + _b = _c[7]; _c[7] = _c[0]; _c[0] = _b; \ + _b = _c[6]; _c[6] = _c[1]; _c[1] = _b; \ + _b = _c[5]; _c[5] = _c[2]; _c[2] = _b; \ + _b = _c[4]; _c[4] = _c[3]; _c[3] = _b; \ +} +return _a.ul; +} +static inline uint64_t _hton_ul(uint64_t ul) + /*...@*/ +{ +return _ntoh_ul(ul); +} + +static inline uint32_t _ntoh_ui(uint32_t ui) + /*...@*/ +{ +union _dbswap _a; +_a.ui = ui; +if (_endian.uc[0] == 0x44) { + uint8_t _b, *_c = _a.uc; \ + _b = _c[3]; _c[3] = _c[0]; _c[0] = _b; \ + _b = _c[2]; _c[2] = _c[1]; _c[1] = _b; \ +} +return _a.ui; +} +static inline uint32_t _hton_ui(uint32_t ui) + /*...@*/ +{ +return _ntoh_ui(ui); +} + +static inline uint16_t _ntoh_us(uint16_t us) + /*...@*/ +{ +union _dbswap _a; +_a.us = us; +if (_endian.uc[0] == 0x44) { + uint8_t _b, *_c = _a.uc; \ + _b = _c[1]; _c[1] = _c[0]; _c[0] = _b; \ +} +return _a.us; } -static inline uint32_t _htonl(uint32_t ui) +static inline uint16_t _hton_us(uint16_t us) + /*...@*/ {
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 08-Dec-2009 19:49:25 Branch: HEAD Handle: 2009120818492500 Modified files: rpm/rpmdb db3.c Log: - fix: don't pass DB_AUTO_COMMIT to DB-associate(). Summary: RevisionChanges Path 1.131 +1 -2 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.130 -r1.131 db3.c --- rpm/rpmdb/db3.c 8 Dec 2009 18:30:02 - 1.130 +++ rpm/rpmdb/db3.c 8 Dec 2009 18:49:25 - 1.131 @@ -2415,8 +2415,7 @@ if (dbi-dbi_index) { int (*_callback)(DB *, const DBT *, const DBT *, DBT *) = db3Acallback; - int _flags = (rpmdb-_dbi[0]-dbi_eflags DB_INIT_TXN) - ? DB_AUTO_COMMIT : 0; + int _flags = DB_IMMUTABLE_KEY; if (oflags (DB_CREATE|DB_TRUNCATE)) _flags |= DB_CREATE; xx = db3associate(rpmdb-_dbi[0], dbi, _callback, _flags); } @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 04-Dec-2009 05:04:27 Branch: HEAD Handle: 2009120404042700 Modified files: rpm/rpmdb db3.c Log: - print the primary key in hex to sort endianness issues. Summary: RevisionChanges Path 1.125 +1 -1 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.124 -r1.125 db3.c --- rpm/rpmdb/db3.c 19 Nov 2009 20:19:34 - 1.124 +++ rpm/rpmdb/db3.c 4 Dec 2009 04:04:27 - 1.125 @@ -356,7 +356,7 @@ } else { switch (_nu) { default: break; - case 4: sprintf(te, \t%u, *(uint32_t *)_u); break; + case 4: sprintf(te, \t0x%08x, *(uint32_t *)_u); break; } } @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 09-Nov-2009 15:28:34 Branch: HEAD Handle: 2009110914283300 Modified files: rpm/rpmdb db3.c Log: - rpmdb: oops, both the seqno record and the Seqno table need to be closed. Summary: RevisionChanges Path 1.122 +1 -2 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.121 -r1.122 db3.c --- rpm/rpmdb/db3.c 10 Oct 2009 18:55:30 - 1.121 +++ rpm/rpmdb/db3.c 9 Nov 2009 14:28:33 - 1.122 @@ -1336,11 +1336,10 @@ rc = cvtdberr(dbi, seq-close, rc, _debug); seq = dbi-dbi_seq = NULL; - rpmlog(RPMLOG_DEBUG, D_(closed db sequence%s/%s\n), + rpmlog(RPMLOG_DEBUG, D_(closed db seqno %s/%s\n), dbhome, (dbfile ? dbfile : dbiBN)); } - if (db) { rc = db-close(db, 0); /* XXX ignore not found error messages. */ @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 10-Oct-2009 15:58:20 Branch: HEAD Handle: 2009101013581900 Modified files: rpm/rpmdb db3.c Log: - db3: set open/associate flag automagically. Summary: RevisionChanges Path 1.120 +4 -1 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.119 -r1.120 db3.c --- rpm/rpmdb/db3.c 7 Oct 2009 18:27:33 - 1.119 +++ rpm/rpmdb/db3.c 10 Oct 2009 13:58:19 - 1.120 @@ -2255,6 +2255,8 @@ #endif /* PLD_CHROOT */ #endif /* HACK */ + if (rpmdb-_dbi[0]-dbi_eflags DB_INIT_TXN) + oflags |= DB_AUTO_COMMIT; #if (DB_VERSION_MAJOR == 4 DB_VERSION_MINOR = 1) rc = (db-open)(db, _txnid, dbpath, dbsubfile, dbi_type, oflags, dbi-dbi_perms); @@ -2348,7 +2350,8 @@ if (dbi-dbi_index) { int (*_callback)(DB *, const DBT *, const DBT *, DBT *) = db3Acallback; - int _flags = 0; + int _flags = (rpmdb-_dbi[0]-dbi_eflags DB_INIT_TXN) + ? DB_AUTO_COMMIT : 0; xx = db3associate(rpmdb-_dbi[0], dbi, _callback, _flags); } if (dbi-dbi_seq_id) { @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c librpmdb.vers logio.h logio_rec.c rpmdb.h
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 10-Oct-2009 20:55:30 Branch: HEAD Handle: 2009101018553000 Modified files: rpm/rpmdb db3.c librpmdb.vers logio.h logio_rec.c rpmdb.h Log: - dbi: add additional system calls to logs, wired on main RPM code paths. Summary: RevisionChanges Path 1.121 +20 -8 rpm/rpmdb/db3.c 1.71+5 -0 rpm/rpmdb/librpmdb.vers 1.4 +2 -0 rpm/rpmdb/logio.h 1.4 +83 -0 rpm/rpmdb/logio_rec.c 1.112 +91 -0 rpm/rpmdb/rpmdb.h patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.120 -r1.121 db3.c --- rpm/rpmdb/db3.c 10 Oct 2009 13:58:19 - 1.120 +++ rpm/rpmdb/db3.c 10 Oct 2009 18:55:30 - 1.121 @@ -29,6 +29,10 @@ #include debug.h +extern int logio_dispatch(DB_ENV * dbenv, DBT * dbt, DB_LSN * lsn, db_recops op) + /*...@*/; + + #if !defined(DB_CLIENT) /* XXX db-4.2.42 retrofit */ #define DB_CLIENT DB_RPCCLIENT #endif @@ -550,6 +554,8 @@ /* Try to join, rather than create, the environment. */ /* XXX DB_JOINENV is defined to 0 in db-4.5.20 */ if (eflags DB_JOINENV) eflags = DB_JOINENV; +/* XXX DB_RECOVER needs automagic */ +if (!(eflags DB_INIT_TXN)) eflags = ~DB_RECOVER; if (dbfile) rpmlog(RPMLOG_DEBUG, D_(opening db environment %s/%s %s\n), @@ -575,11 +581,6 @@ /*...@-noeffectuncon@*/ /* FIX: annotate db3 methods */ - /* 4.1: dbenv-set_app_dispatch(???) */ - /* 4.1: dbenv-set_alloc(???) */ - /* 4.1: dbenv-set_data_dir(???) */ - /* 4.1: dbenv-set_encrypt(???) */ - /*...@-castfcnptr@*/ dbenv-set_errcall(dbenv, (void *)rpmdb-db_errcall); /*...@=castfcnptr@*/ @@ -587,6 +588,10 @@ dbenv-set_errpfx(dbenv, rpmdb-db_errpfx); /*...@=noeffectuncon@*/ + /* 4.1: dbenv-set_alloc(???) */ + /* 4.1: dbenv-set_data_dir(???) */ + /* 4.1: dbenv-set_encrypt(???) */ + /* 4.1: dbenv-set_feedback(???) */ /* 4.1: dbenv-set_flags(???) */ @@ -639,6 +644,10 @@ /* Replication: */ /* Sequences: */ /* Transactions: */ +if (eflags DB_INIT_TXN) { + xx = dbenv-set_app_dispatch(dbenv, logio_dispatch); + xx = cvtdberr(dbi, dbenv-set_app_dispatch, xx, _debug); +} /* Other: */ if (dbi-dbi_no_fsync) { @@ -1965,6 +1974,10 @@ #endif } } + /* ... transactionally protected open's need DB_AUTO_COMMIT ... */ + if (rpmdb-_dbi[0] + rpmdb-_dbi[0]-dbi_eflags DB_INIT_TXN) + oflags |= DB_AUTO_COMMIT; dbf = _free(dbf); } } @@ -2255,8 +2268,6 @@ #endif /* PLD_CHROOT */ #endif /* HACK */ - if (rpmdb-_dbi[0]-dbi_eflags DB_INIT_TXN) - oflags |= DB_AUTO_COMMIT; #if (DB_VERSION_MAJOR == 4 DB_VERSION_MINOR = 1) rc = (db-open)(db, _txnid, dbpath, dbsubfile, dbi_type, oflags, dbi-dbi_perms); @@ -2340,7 +2351,8 @@ } dbi-dbi_db = db; -db-app_private = dbi; +if (db) + db-app_private = dbi; DBIDEBUG(dbi, (stderr, -- %s(%p,%s,%p) dbi %p rc %d %s\n, __FUNCTION__, rpmdb, tagName(rpmtag), dbip, dbi, rc, _OFLAGS(dbi-dbi_oflags))); @@ . patch -p0 '@@ .' Index: rpm/rpmdb/librpmdb.vers $ cvs diff -u -r1.70 -r1.71 librpmdb.vers --- rpm/rpmdb/librpmdb.vers 10 Oct 2009 15:03:56 - 1.70 +++ rpm/rpmdb/librpmdb.vers 10 Oct 2009 18:55:30 - 1.71 @@ -81,7 +81,12 @@ headerVerifyInfo; hGetColor; _init; +logio_Link_log; logio_Mkdir_log; +logio_Mkfifo_log; +logio_Mknod_log; +logio_Rmdir_log; +logio_Symlink_log; _pkgio_debug; prDbiOpenFlags; rdbOptions; @@ . patch -p0 '@@ .' Index: rpm/rpmdb/logio.h $ cvs diff -u -r1.3 -r1.4 logio.h --- rpm/rpmdb/logio.h 9 Oct 2009 00:06:43 - 1.3 +++ rpm/rpmdb/logio.h 10 Oct 2009 18:55:30 - 1.4 @@ -69,6 +69,8 @@ #undef _LOGIO_PROTO +int logio_dispatch(DB_ENV * dbenv, DBT * dbt, DB_LSN * lsn, db_recops op); + int logio_init_print __P((DB_ENV *, DB_DISTAB *)); #endif /* !H_LOGIO */ @@ . patch -p0
[CVS] RPM: rpm/rpmdb/ db3.c rpmdb.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 07-Oct-2009 20:27:33 Branch: HEAD Handle: 2009100718273300 Modified files: rpm/rpmdb db3.c rpmdb.c Log: - dbi: initialize new variables, rescusitate DB_RECOVER. Summary: RevisionChanges Path 1.119 +1 -0 rpm/rpmdb/db3.c 1.325 +4 -0 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.118 -r1.119 db3.c --- rpm/rpmdb/db3.c 7 Oct 2009 00:50:24 - 1.118 +++ rpm/rpmdb/db3.c 7 Oct 2009 18:27:33 - 1.119 @@ -666,6 +666,7 @@ } #endif +if (eflags DB_RECOVER) eflags |= DB_CREATE; #if (DB_VERSION_MAJOR == 3 DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 4) rc = (dbenv-open)(dbenv, dbhome, eflags, dbi-dbi_perms); #else @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.324 -r1.325 rpmdb.c --- rpm/rpmdb/rpmdb.c 7 Oct 2009 00:50:25 - 1.324 +++ rpm/rpmdb/rpmdb.c 7 Oct 2009 18:27:33 - 1.325 @@ -1177,7 +1177,11 @@ db-db_nbits = 0; db-db_next = NULL; db-db_opens = 0; + db-db_dbenv = NULL; +db-db_txnid = NULL; +db-db_logc = NULL; +db-db_mpf = NULL; dbiTagsInit(db-db_tags, db-db_ndbi); db-_dbi = xcalloc(db-db_ndbi, sizeof(*db-_dbi)); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.c rpmdb.h
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 07-Oct-2009 01:04:13 Branch: HEAD Handle: 2009100623041300 Modified files: rpm/rpmdb db3.c dbconfig.c rpmdb.c rpmdb.h Log: - dbi: use the dbiTxnid() getter wrapper consistently. Summary: RevisionChanges Path 1.117 +58 -23 rpm/rpmdb/db3.c 1.74+16 -16 rpm/rpmdb/dbconfig.c 1.323 +18 -16 rpm/rpmdb/rpmdb.c 1.107 +133 -2 rpm/rpmdb/rpmdb.h patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.116 -r1.117 db3.c --- rpm/rpmdb/db3.c 5 Oct 2009 22:48:48 - 1.116 +++ rpm/rpmdb/db3.c 6 Oct 2009 23:04:13 - 1.117 @@ -162,6 +162,36 @@ #define _ENTRY(_v) { DB_##_v, #_v, } +static KEY DBeflags[] = { +_ENTRY(INIT_CDB), +_ENTRY(INIT_LOCK), +_ENTRY(INIT_LOG), +_ENTRY(INIT_MPOOL), +_ENTRY(INIT_REP), +_ENTRY(INIT_TXN), +_ENTRY(RECOVER), +_ENTRY(RECOVER_FATAL), +_ENTRY(USE_ENVIRON), +_ENTRY(USE_ENVIRON_ROOT), +_ENTRY(CREATE), +_ENTRY(LOCKDOWN), +_ENTRY(FAILCHK), +_ENTRY(PRIVATE), +_ENTRY(REGISTER), +_ENTRY(SYSTEM_MEM), +_ENTRY(THREAD), +}; +static size_t nDBeflags = sizeof(DBeflags) / sizeof(DBeflags[0]); +static const char * fmtDBeflags(uint32_t flags) +{ +static char buf[BUFSIZ]; +char * te = buf; +te = stpcpy(te, \n\tflags: ); +(void) fmtBits(flags, DBeflags, nDBeflags, te); +return buf; +} +#define _EFLAGS(_eflags)fmtDBeflags(_eflags) + static KEY DBoflags[] = { _ENTRY(AUTO_COMMIT), _ENTRY(CREATE), @@ -182,7 +212,7 @@ (void) fmtBits(flags, DBoflags, nDBoflags, te); return buf; } -#define _OFLAGS(_dbi) fmtDBoflags((_dbi)-dbi_oflags) +#define _OFLAGS(_oflags)fmtDBoflags(_oflags) static KEY DBaflags[] = { _ENTRY(CREATE), @@ -213,7 +243,7 @@ (void) fmtBits(flags, DBafflags, nDBafflags, te); return buf; } -#define _AFFLAGS(_afflags) fmtDBaflags(_afflags) +#define _AFFLAGS(_afflags) fmtDBafflags(_afflags) static KEY DBCflags[] = { _ENTRY(AFTER), /* Dbc.put */ @@ -420,6 +450,7 @@ rc = dbenv-close(dbenv, 0); rc = cvtdberr(dbi, dbenv-close, rc, _debug); +rpmdb-db_dbenv = NULL; if (dbfile) rpmlog(RPMLOG_DEBUG, D_(closed db environment %s/%s\n), @@ -498,7 +529,6 @@ int rc; int xx; -DBIDEBUG(dbi, (stderr, -- %s(%p,%s,%s,%s,%p)\n, __FUNCTION__, dbi, dbhome, dbfile, dbsubfile, dbenvp)); if (!oneshot) { #if (DB_VERSION_MAJOR == 3 DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 4) xx = db_env_set_func_open((int (*)(const char *, int, ...))Open); @@ -667,6 +697,8 @@ *dbenvp = dbenv; +DBIDEBUG(dbi, (stderr, -- %s(%p(%s),%s,%s,%s,%p) dbenv %p %s\n, __FUNCTION__, dbi, tagName(dbi-dbi_rpmtag), dbhome, dbfile, dbsubfile, dbenvp, dbenv, _EFLAGS(eflags))); + return 0; errxit: @@ -721,19 +753,19 @@ /*...@=mustmod@*/ /*...@-mustmod@*/ -static int db3truncate(dbiIndex dbi, DB_TXN * txnid, unsigned int * countp, - unsigned int flags) +static int db3truncate(dbiIndex dbi, unsigned int * countp, unsigned int flags) /*...@globals fileSystem @*/ /*...@modifies *countp, fileSystem @*/ { DB * db = dbi-dbi_db; +DB_TXN * _txnid = dbiTxnid(dbi); int rc; assert(db != NULL); -rc = db-truncate(db, txnid, countp, flags); +rc = db-truncate(db, _txnid, countp, flags); rc = cvtdberr(dbi, db-truncate, rc, _debug); -DBIDEBUG(dbi, (stderr, -- %s(%p,%p,%p,0x%x) rc %d\n, __FUNCTION__, dbi, txnid, countp, flags, rc)); +DBIDEBUG(dbi, (stderr, -- %s(%p,%p,0x%x) rc %d\n, __FUNCTION__, dbi, countp, flags, rc)); return rc; } @@ -808,7 +840,7 @@ /*...@modifies fileSystem @*/ { DB * db = dbi-dbi_db; -DB_TXN * _txnid = NULL; +DB_TXN * _txnid = dbiTxnid(dbi); int _printit; int rc; @@ -830,7 +862,7 @@ /*...@modifies *seqnop, fileSystem @*/ { DB * db = dbi-dbi_db; -DB_TXN * _txnid = NULL; +DB_TXN * _txnid = dbiTxnid(dbi); DB_SEQUENCE * seq = dbi-dbi_seq; int32_t _delta = 1; db_seq_t seqno = 0; @@ -939,12 +971,13 @@ /*...@modifies fileSystem @*/ { DB * db = dbi-dbi_db; +
[CVS] RPM: rpm/rpmdb/ db3.c rpmdb.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 07-Oct-2009 02:50:25 Branch: HEAD Handle: 2009100700502401 Modified files: rpm/rpmdb db3.c rpmdb.c Log: - dbi: sanitize DB_THREAD for non-root lusers. Summary: RevisionChanges Path 1.118 +30 -18 rpm/rpmdb/db3.c 1.324 +0 -2 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.117 -r1.118 db3.c --- rpm/rpmdb/db3.c 6 Oct 2009 23:04:13 - 1.117 +++ rpm/rpmdb/db3.c 7 Oct 2009 00:50:24 - 1.118 @@ -1005,10 +1005,10 @@ int _printit; int rc; -assert(db != NULL); +assert(db != NULL); if (dbcursor == NULL) { /* XXX duplicates require cursors. */ - rc = db-get(db, _txnid, key, data, 0); + rc = db-get(db, _txnid, key, data, flags); /* XXX DB_NOTFOUND can be returned */ _printit = (rc == DB_NOTFOUND ? 0 : _debug); rc = cvtdberr(dbi, db-get, rc, _printit); @@ -1042,25 +1042,32 @@ /*...@modifies *dbcursor, *key, *data, fileSystem @*/ { DB * db = dbi-dbi_db; +DB_TXN * _txnid = dbiTxnid(dbi); int _printit; int rc; -assert(db != NULL); -assert(dbcursor != NULL); - +assert(db != NULL); +if (dbcursor == NULL) { + /* XXX duplicates require cursors. */ + rc = db-pget(db, _txnid, key, pkey, data, flags); + /* XXX DB_NOTFOUND can be returned */ + _printit = (rc == DB_NOTFOUND ? 0 : _debug); + rc = cvtdberr(dbi, db-pget, rc, _printit); +} else { #if (DB_VERSION_MAJOR == 4 DB_VERSION_MINOR = 6) -/* XXX db3 does DB_FIRST on uninitialized cursor */ -rc = dbcursor-pget(dbcursor, key, pkey, data, flags); -/* XXX DB_NOTFOUND can be returned */ -_printit = (rc == DB_NOTFOUND ? 0 : _debug); -rc = cvtdberr(dbi, dbcursor-pget, rc, _printit); + /* XXX db3 does DB_FIRST on uninitialized cursor */ + rc = dbcursor-pget(dbcursor, key, pkey, data, flags); + /* XXX DB_NOTFOUND can be returned */ + _printit = (rc == DB_NOTFOUND ? 0 : _debug); + rc = cvtdberr(dbi, dbcursor-pget, rc, _printit); #else -/* XXX db3 does DB_FIRST on uninitialized cursor */ -rc = dbcursor-c_pget(dbcursor, key, pkey, data, flags); -/* XXX DB_NOTFOUND can be returned */ -_printit = (rc == DB_NOTFOUND ? 0 : _debug); -rc = cvtdberr(dbi, dbcursor-c_pget, rc, _printit); + /* XXX db3 does DB_FIRST on uninitialized cursor */ + rc = dbcursor-c_pget(dbcursor, key, pkey, data, flags); + /* XXX DB_NOTFOUND can be returned */ + _printit = (rc == DB_NOTFOUND ? 0 : _debug); + rc = cvtdberr(dbi, dbcursor-c_pget, rc, _printit); #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, data, NULL))); return rc; @@ -1077,7 +1084,7 @@ DB_TXN * _txnid = dbiTxnid(dbi); int rc; -assert(db != NULL); +assert(db != NULL); if (dbcursor == NULL) { rc = db-del(db, _txnid, key, flags); rc = cvtdberr(dbi, db-del, rc, _debug); @@ -1898,6 +1905,7 @@ /* dbhome is unwritable, don't attempt DB_CREATE on DB-open ... */ oflags = ~DB_CREATE; + oflags = ~DB_AUTO_COMMIT; /* ... but DBENV-open might still need DB_CREATE ... */ if (dbi-dbi_eflags DB_PRIVATE) { @@ -1905,7 +1913,9 @@ } else { dbi-dbi_eflags |= DB_JOINENV; dbi-dbi_oeflags = ~DB_CREATE; +#ifdef DYING dbi-dbi_oeflags = ~DB_THREAD; +#endif /* ... but, unless DB_PRIVATE is used, skip DBENV. */ dbi-dbi_use_dbenv = 0; } @@ -1949,7 +1959,9 @@ } else { dbi-dbi_eflags |= DB_JOINENV; dbi-dbi_oeflags = ~DB_CREATE; +#ifdef DYING dbi-dbi_oeflags = ~DB_THREAD; +#endif } } dbf = _free(dbf); @@ -2107,7 +2119,7 @@ /* 4.1: db-set_errcall(dbenv, rpmdb-db_errcall); */ /* 4.1: db-set_errfile(dbenv, rpmdb-db_errfile); */ /* 4.1: db-set_errpfx(dbenv, rpmdb-db_errpfx); */ - /* 4.1: db-set_feedback(???) */ +/* 4.1: db-set_feedback(???) */ if (rc == 0 dbi-dbi_lorder) { rc = db-set_lorder(db, dbi-dbi_lorder); @@
[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.h
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 05-Oct-2009 16:21:40 Branch: HEAD Handle: 2009100514214000 Modified files: rpm/rpmdb db3.c dbconfig.c rpmdb.h Log: - dbi: wire up DB_SEQUENCE configuration. Summary: RevisionChanges Path 1.114 +89 -1 rpm/rpmdb/db3.c 1.72+8 -3 rpm/rpmdb/dbconfig.c 1.104 +11 -7 rpm/rpmdb/rpmdb.h patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.113 -r1.114 db3.c --- rpm/rpmdb/db3.c 5 Oct 2009 03:42:29 - 1.113 +++ rpm/rpmdb/db3.c 5 Oct 2009 14:21:40 - 1.114 @@ -1175,6 +1175,7 @@ const char * dbfile; const char * dbsubfile; DB * db = dbi-dbi_db; +DB_SEQUENCE * seq = dbi-dbi_seq; const char * dbiBN = mapTagName(rpmdb, dbi); int _printit; int rc = 0, xx; @@ -1210,6 +1211,16 @@ #endif } +if (seq) { + rc = seq-close(seq, 0); + rc = cvtdberr(dbi, seq-close, rc, _debug); + seq = dbi-dbi_seq = NULL; + + rpmlog(RPMLOG_DEBUG, D_(closed db seqno %s/%s\n), + dbhome, (dbfile ? dbfile : dbiBN)); + +} + if (db) { rc = db-close(db, 0); /* XXX ignore not found error messages. */ @@ -1598,6 +1609,74 @@ return rc; } +static int seqid_init(dbiIndex dbi, const char * keyp, size_t keylen, + DB_SEQUENCE ** seqp) +{ +DB * db = dbi-dbi_db; +DBT k = {0}; +DB_TXN * txnid = NULL; +DB_SEQUENCE * seq = NULL; +db_seq_t _rangemin = -922337203685477600LL; +db_seq_t _rangemax = 922337203685477600LL; +db_seq_t _value = 0; +int32_t _cachesize = 0; +uint32_t _flags = DB_SEQ_INC; +uint32_t _oflags = DB_CREATE; +int rc; + +assert(db != NULL); +if (seqp) *seqp = NULL; + +rc = db_sequence_create(seq, db, 0); +rc = cvtdberr(dbi, db_sequence_create, rc, _debug); +if (rc) goto exit; + +if (dbi-dbi_seq_cachesize) { + _cachesize = dbi-dbi_seq_cachesize; + rc = seq-set_cachesize(seq, _cachesize); + rc = cvtdberr(dbi, seq-set_cachesize, rc, _debug); + if (rc) goto exit; +} + +if (dbi-dbi_seq_initial) + _value = dbi-dbi_seq_initial; +rc = seq-initial_value(seq, _value); +rc = cvtdberr(dbi, seq-initial_value, rc, _debug); +if (rc) goto exit; + +if (dbi-dbi_seq_min) + _rangemin = dbi-dbi_seq_min; +if (dbi-dbi_seq_max) + _rangemin = dbi-dbi_seq_max; +rc = seq-set_range(seq, _rangemin, _rangemax); +rc = cvtdberr(dbi, seq-set_range, rc, _debug); +if (rc) goto exit; + +if (dbi-dbi_seq_flags) + _flags = dbi-dbi_seq_flags; +rc = seq-set_flags(seq, _flags); +rc = cvtdberr(dbi, seq-set_flags, rc, _debug); +if (rc) goto exit; + +k.data = (void *)keyp; +k.size = (u_int32_t) (keylen 0 ? keylen : strlen(keyp)); +rc = seq-open(seq, txnid, k, _oflags); +rc = cvtdberr(dbi, seq-open, rc, _debug); +if (rc) goto exit; + +exit: +if (rc == 0 seqp != NULL) + *seqp = seq; +else { + int xx = seq-close(seq, 0); + xx = cvtdberr(dbi, seq-close, xx, _debug); +} + +DBIDEBUG(dbi, (stderr, -- %s(%p,%p[%u],%p) seq %p rc %d\n, __FUNCTION__, dbi, keyp, keylen, seqp, (seqp ? *seqp : NULL), rc)); + +return rc; +} + /** * Return handle for an index database. * @param rpmdb rpm database @@ -2157,7 +2236,16 @@ int (*_callback)(DB *, const DBT *, const DBT *, DBT *) = db3Acallback; int _flags = 0; - (void) db3associate(rpmdb-_dbi[0], dbi, _callback, _flags); + xx = db3associate(rpmdb-_dbi[0], dbi, _callback, _flags); + } + if (dbi-dbi_seq_id) { + char * end = NULL; + uint32_t u = (uint32_t) strtoll(dbi-dbi_seq_id, end, 0); + + if (*end == '\0') + xx = seqid_init(dbi,(const char *)u, sizeof(u), dbi-dbi_seq); + else + xx = seqid_init(dbi, dbi-dbi_seq_id, 0, dbi-dbi_seq); } } else { dbi-dbi_verify_on_close = 0; @@ . patch -p0 '@@ .' Index: rpm/rpmdb/dbconfig.c $ cvs diff -u -r1.71 -r1.72 dbconfig.c --- rpm/rpmdb/dbconfig.c 4 Oct 2009 17:42:14 - 1.71 +++ rpm/rpmdb/dbconfig.c
[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.h
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 06-Oct-2009 00:48:49 Branch: HEAD Handle: 2009100522484800 Modified files: rpm/rpmdb db3.c dbconfig.c rpmdb.h Log: - dbi: stub-in per-table Bloom filters. - dbi: better debugging for DB-associate_foreign(). Summary: RevisionChanges Path 1.116 +39 -4 rpm/rpmdb/db3.c 1.73+3 -0 rpm/rpmdb/dbconfig.c 1.106 +5 -1 rpm/rpmdb/rpmdb.h patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.115 -r1.116 db3.c --- rpm/rpmdb/db3.c 5 Oct 2009 20:31:50 - 1.115 +++ rpm/rpmdb/db3.c 5 Oct 2009 22:48:48 - 1.116 @@ -184,6 +184,37 @@ } #define _OFLAGS(_dbi) fmtDBoflags((_dbi)-dbi_oflags) +static KEY DBaflags[] = { +_ENTRY(CREATE), +_ENTRY(IMMUTABLE_KEY), +}; +static size_t nDBaflags = sizeof(DBaflags) / sizeof(DBaflags[0]); +static const char * fmtDBaflags(uint32_t flags) +{ +static char buf[BUFSIZ]; +char * te = buf; +te = stpcpy(te, \n\tflags: ); +(void) fmtBits(flags, DBaflags, nDBaflags, te); +return buf; +} +#define _AFLAGS(_aflags)fmtDBaflags(_aflags) + +static KEY DBafflags[] = { +_ENTRY(FOREIGN_ABORT), +_ENTRY(FOREIGN_CASCADE), +_ENTRY(FOREIGN_NULLIFY), +}; +static size_t nDBafflags = sizeof(DBafflags) / sizeof(DBafflags[0]); +static const char * fmtDBafflags(uint32_t flags) +{ +static char buf[BUFSIZ]; +char * te = buf; +te = stpcpy(te, \n\tflags: ); +(void) fmtBits(flags, DBafflags, nDBafflags, te); +return buf; +} +#define _AFFLAGS(_afflags) fmtDBaflags(_afflags) + static KEY DBCflags[] = { _ENTRY(AFTER), /* Dbc.put */ _ENTRY(APPEND), /* Db.put */ @@ -1139,11 +1170,9 @@ rc = cvtdberr(dbi, db-associate, rc, _debug); if (dbi-dbi_debug || dbisecondary-dbi_debug) { - const char * tag1 = xstrdup(tagName(dbi-dbi_rpmtag)); const char * tag2 = xstrdup(tagName(dbisecondary-dbi_rpmtag)); -fprintf(stderr, -- %s(%p(%s),%p(%s),%p,0x%x) rc %d\n, __FUNCTION__, dbi, tag1, dbisecondary, tag2, callback, flags, rc); +fprintf(stderr, -- %s(%p(%s),%p(%s),%p,0x%x) rc %d %s\n, __FUNCTION__, dbi, tagName(dbi-dbi_rpmtag), dbisecondary, tag2, callback, flags, rc, _AFLAGS(flags)); tag2 = _free(tag2); - tag1 = _free(tag1); } return rc; @@ -1161,7 +1190,6 @@ DB * secondary = dbisecondary-dbi_db; int rc; -DBIDEBUG(dbi, (stderr, -- %s(%p,%p,%p,0x%x)\n, __FUNCTION__, dbi, dbisecondary, callback, flags)); /*...@-moduncon@*/ /* FIX: annotate db3 methods */ #if (DB_VERSION_MAJOR == 4 DB_VERSION_MINOR = 8) assert(db != NULL); @@ -1171,6 +1199,13 @@ #endif /*...@=moduncon@*/ rc = cvtdberr(dbi, db-associate_foreign, rc, _debug); + +if (dbi-dbi_debug || dbisecondary-dbi_debug) { + const char * tag2 = xstrdup(tagName(dbisecondary-dbi_rpmtag)); +fprintf(stderr, -- %s(%p(%s),%p(%s),%p,0x%x) rc %d %s\n, __FUNCTION__, dbi, tagName(dbi-dbi_rpmtag), dbisecondary, tag2, callback, flags, rc, _AFFLAGS(flags)); + tag2 = _free(tag2); +} + return rc; } /*...@=mustmod@*/ @@ . patch -p0 '@@ .' Index: rpm/rpmdb/dbconfig.c $ cvs diff -u -r1.72 -r1.73 dbconfig.c --- rpm/rpmdb/dbconfig.c 5 Oct 2009 14:21:40 - 1.72 +++ rpm/rpmdb/dbconfig.c 5 Oct 2009 22:48:48 - 1.73 @@ -466,9 +466,12 @@ dbi-dbi_file = _free(dbi-dbi_file); dbi-dbi_subfile = _free(dbi-dbi_subfile); dbi-dbi_tmpdir = _free(dbi-dbi_tmpdir); + dbi-dbi_bf = rpmbfFree(dbi-dbi_bf); dbi-dbi_host = _free(dbi-dbi_host); dbi-dbi_errpfx = _free(dbi-dbi_errpfx); + dbi-dbi_seq_id = _free(dbi-dbi_seq_id); dbi-dbi_re_source = _free(dbi-dbi_re_source); + dbi-dbi_foreign = _free(dbi-dbi_foreign); dbi-dbi_stats = _free(dbi-dbi_stats); } } @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.h $ cvs diff -u -r1.105 -r1.106 rpmdb.h --- rpm/rpmdb/rpmdb.h 5 Oct 2009 20:31:50 - 1.105 +++ rpm/rpmdb/rpmdb.h 5 Oct 2009 22:48:48 - 1.106 @@ -54,6 +54,7 @@ #if defined(_RPMDB_INTERNAL) #include rpmio.h +#include rpmbf.h #include
[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.c rpmdb.h sqlite.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 04-Oct-2009 19:42:14 Branch: HEAD Handle: 2009100417421400 Modified files: rpm/rpmdb db3.c dbconfig.c rpmdb.c rpmdb.h sqlite.c Log: - dbi: add version strings. - dbi: haul the coprolites out of dbiOpen. hmmm, maybe ebay instead? - dbi: re-add thread_count config syntax for now, copying DB_CONFIG is a PITA. Summary: RevisionChanges Path 1.110 +8 -3 rpm/rpmdb/db3.c 1.71+3 -0 rpm/rpmdb/dbconfig.c 1.319 +41 -82 rpm/rpmdb/rpmdb.c 1.102 +5 -3 rpm/rpmdb/rpmdb.h 1.42+4 -1 rpm/rpmdb/sqlite.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.109 -r1.110 db3.c --- rpm/rpmdb/db3.c 4 Oct 2009 05:28:29 - 1.109 +++ rpm/rpmdb/db3.c 4 Oct 2009 17:42:14 - 1.110 @@ -647,6 +647,10 @@ /*...@-noeffectuncon@*/ dbenv-set_msgfile(dbenv, rpmdb-db_errfile); /*...@=noeffectuncon@*/ +if (dbi-dbi_thread_count = 8) { + xx = dbenv-set_thread_count(dbenv, dbi-dbi_thread_count); + xx = cvtdberr(dbi, dbenv-set_thread_count, xx, _debug); +} #endif #if (DB_VERSION_MAJOR == 3 DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 4) @@ -664,7 +668,7 @@ goto errxit; #if (DB_VERSION_MAJOR == 4 DB_VERSION_MINOR = 5) -if (!rpmdb-db_verifying !rpmdb-db_rebuilding) { +if (!rpmdb-db_verifying !rpmdb-db_rebuilding dbi-dbi_thread_count = 8) { /* XXX Set pid/tid is_alive probe. */ xx = dbenv-set_isalive(dbenv, db3is_alive); xx = cvtdberr(dbi, dbenv-set_isalive, xx, _debug); @@ -2074,6 +2078,8 @@ dbi-dbi_db = db; db-app_private = dbi; +DBIDEBUG(dbi, (stderr, -- %s(%p,%s,%p) dbi %p rc %d %s\n, __FUNCTION__, rpmdb, tagName(rpmtag), dbip, dbi, rc, _OFLAGS(dbi))); + if (rc == 0 dbi-dbi_db != NULL dbip != NULL) { dbi-dbi_vec = db3vec; *dbip = dbi; @@ -2091,7 +2097,6 @@ urlfn = _free(urlfn); -DBIDEBUG(dbi, (stderr, -- %s(%p,%s,%p) dbi %p rc %d %s\n, __FUNCTION__, rpmdb, tagName(rpmtag), dbip, dbi, rc, _OFLAGS(dbi))); /*...@-nullstate -compmemp...@*/ return rc; /*...@=nullstate =compmemp...@*/ @@ -2102,7 +2107,7 @@ /*...@-exportheadervar@*/ /*...@observer@*/ /*...@unchecked@*/ struct _dbiVec db3vec = { -DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, +DB_VERSION_STRING, DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, db3open, db3close, db3sync, db3associate, db3associate_foreign, db3join, db3copen, db3cclose, db3cdup, db3cdel, db3cget, db3cpget, db3cput, db3ccount, db3byteswapped, db3stat @@ . patch -p0 '@@ .' Index: rpm/rpmdb/dbconfig.c $ cvs diff -u -r1.70 -r1.71 dbconfig.c --- rpm/rpmdb/dbconfig.c 4 Oct 2009 05:28:29 - 1.70 +++ rpm/rpmdb/dbconfig.c 4 Oct 2009 17:42:14 - 1.71 @@ -334,6 +334,9 @@ { region_init, 0,POPT_ARG_VAL,db3dbi.dbi_region_init, 1, NULL, NULL }, + { thread_count, 0,POPT_ARG_INT, db3dbi.dbi_thread_count, 0, + NULL, NULL }, + #endif /* Locking: */ @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.318 -r1.319 rpmdb.c --- rpm/rpmdb/rpmdb.c 4 Oct 2009 05:28:29 - 1.318 +++ rpm/rpmdb/rpmdb.c 4 Oct 2009 17:42:14 - 1.319 @@ -294,11 +294,11 @@ dbiIndex dbiOpen(rpmdb db, rpmTag tag, /*...@unused@*/ unsigned int flags) { static int _oneshot = 0; +static int _dbapi_rebuild; size_t dbix; tagStore_t dbiTag; -const char * dbiBN; dbiIndex dbi = NULL; -int _dbapi, _dbapi_rebuild, _dbapi_wanted; +int _dbapi; int rc = 0; /* Insure that stdin/stdout/stderr are open, lest stderr end up in rpmdb. */ @@ -315,99 +315,56 @@ (void) checkfd(_devnull, STDERR_FILENO, O_WRONLY); #endif /*...@=noeffect@*/ +_dbapi_rebuild = rpmExpandNumeric(%{?_dbapi_rebuild}%{!?_dbapi_rebuild:4}); +assert(_dbapi_rebuild == 3 || _dbapi_rebuild == 4); _oneshot++; } -/*...@-modfilesys@*/ -if (_rpmdb_debug) -fprintf(stderr, == dbiOpen(%p, %s(%u), 0x%x)\n, db, tagName(tag), tag, flags); -/*...@=modfilesys@*/ - -if (db == NULL) - return
[CVS] RPM: rpm/rpmdb/ db3.c rpmdb.h sqlite.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 05-Oct-2009 04:13:45 Branch: HEAD Handle: 2009100502134400 Modified files: rpm/rpmdb db3.c rpmdb.h sqlite.c Log: - dbi: stub-in wrappers for DB-{remove,rename,truncate,upgrade,verify}. - dbi: add dbiExists() wrapper. Summary: RevisionChanges Path 1.111 +123 -48rpm/rpmdb/db3.c 1.103 +30 -0 rpm/rpmdb/rpmdb.h 1.43+19 -0 rpm/rpmdb/sqlite.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.110 -r1.111 db3.c --- rpm/rpmdb/db3.c 4 Oct 2009 17:42:14 - 1.110 +++ rpm/rpmdb/db3.c 5 Oct 2009 02:13:44 - 1.111 @@ -39,54 +39,6 @@ /*...@access dbiIndex @*/ /*...@access dbiIndexSet @*/ -/** \ingroup dbi - * Hash database statistics. - */ -/*...@-fielduse@*/ -struct dbiHStats_s { -unsigned int hash_magic; /*! hash database magic number. */ -unsigned int hash_version; /*! version of the hash database. */ -unsigned int hash_nkeys; /*! no. of unique keys in the database. */ -unsigned int hash_ndata; /*! no. of key/data pairs in the database. */ -unsigned int hash_pagesize; /*! db page (and bucket) size, in bytes. */ -unsigned int hash_nelem; /*! estimated size of the hash table. */ -unsigned int hash_ffactor; /*! no. of items per bucket. */ -unsigned int hash_buckets; /*! no. of hash buckets. */ -unsigned int hash_free; /*! no. of pages on the free list. */ -unsigned int hash_bfree; /*! no. of bytes free on bucket pages. */ -unsigned int hash_bigpages; /*! no. of big key/data pages. */ -unsigned int hash_big_bfree;/*! no. of bytes free on big item pages. */ -unsigned int hash_overflows;/*! no. of overflow pages. */ -unsigned int hash_ovfl_free;/*! no. of bytes free on overflow pages. */ -unsigned int hash_dup; /*! no. of duplicate pages. */ -unsigned int hash_dup_free; /*! no. bytes free on duplicate pages. */ -}; - -/** \ingroup dbi - * B-tree database statistics. - */ -struct dbiBStats_s { -unsigned int bt_magic; /*! btree database magic. */ -unsigned int bt_version; /*! version of the btree database. */ -unsigned int bt_nkeys; /*! no. of unique keys in the database. */ -unsigned int bt_ndata; /*! no. of key/data pairs in the database. */ -unsigned int bt_pagesize;/*! database page size, in bytes. */ -unsigned int bt_minkey; /*! minimum keys per page. */ -unsigned int bt_re_len; /*! length of fixed-length records. */ -unsigned int bt_re_pad; /*! padding byte for fixed-length records. */ -unsigned int bt_levels; /*! no. of levels in the database. */ -unsigned int bt_int_pg; /*! no. of database internal pages. */ -unsigned int bt_leaf_pg; /*! no. of database leaf pages. */ -unsigned int bt_dup_pg; /*! no. of database duplicate pages. */ -unsigned int bt_over_pg; /*! no. of database overflow pages. */ -unsigned int bt_free;/*! no. of pages on the free list. */ -unsigned int bt_int_pgfree; /*! no. of bytes free in internal pages. */ -unsigned int bt_leaf_pgfree;/*! no. of bytes free in leaf pages. */ -unsigned int bt_dup_pgfree; /*! no. of bytes free in duplicate pages. */ -unsigned int bt_over_pgfree;/*! no. of bytes free in overflow pages. */ -}; -/*...@=fielduse@*/ - #ifdef NOTNOW static const char * bfstring(unsigned int x, const char * xbf) { @@ -695,6 +647,107 @@ } /*...@=moduncon@*/ +#ifdef NOTYET +/*...@-mustmod@*/ +static int db3remove(dbiIndex dbi, /*...@null@*/ const char * dbfile, + /*...@unused@*/ /*...@null@*/ const char * dbsubfile, + unsigned int flags) + /*...@globals fileSystem @*/ + /*...@modifies dbi, fileSystem @*/ +{ +DB * db = dbi-dbi_db; +int rc; + +assert(db != NULL); +rc = db-remove(db, dbfile, dbsubfile, flags); +rc = cvtdberr(dbi, db-remove, rc, _debug); + +DBIDEBUG(dbi, (stderr, -- %s(%p,%s,%s,0x%x) rc %d\n, __FUNCTION__, dbi, dbfile, dbsubfile, flags, rc)); + +return rc; +} +/*...@=mustmod@*/ + +/*...@-mustmod@*/ +static int db3rename(dbiIndex dbi, /*...@null@*/ const char * dbfile, + /*...@unused@*/ /*...@null@*/ const char * dbsubfile, + /*...@unused@*/ /*...@null@*/ const char * newname, +
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 05-Oct-2009 04:48:47 Branch: HEAD Handle: 2009100502484600 Modified files: rpm/rpmdb db3.c Log: - dbi: use the (otherwise pointless) db3verify() wrapper. Summary: RevisionChanges Path 1.112 +5 -9 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.111 -r1.112 db3.c --- rpm/rpmdb/db3.c 5 Oct 2009 02:13:44 - 1.111 +++ rpm/rpmdb/db3.c 5 Oct 2009 02:48:46 - 1.112 @@ -726,6 +726,7 @@ return rc; } /*...@=mustmod@*/ +#endif /* NOTYET */ /*...@-mustmod@*/ static int db3verify(dbiIndex dbi, /*...@null@*/ const char * dbfile, @@ -746,7 +747,6 @@ return rc; } /*...@=mustmod@*/ -#endif /* NOTYET */ static int db3sync(dbiIndex dbi, unsigned int flags) /*...@globals fileSystem @*/ @@ -1262,7 +1262,7 @@ } eflags = DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON; - rc = (dbenv-open)(dbenv, dbhome, eflags, 0); + rc = (dbenv-open) (dbenv, dbhome, eflags, 0); rc = cvtdberr(dbi, dbenv-open, rc, _debug); if (rc) goto exit; @@ -1274,20 +1274,16 @@ if (db != NULL) { /*...@-mods@*/ const char * dbf = rpmGetPath(dbhome, /, dbfile, NULL); + const char * _dbsubfile = NULL; + FILE * _fp = NULL; /*...@=mods@*/ - rc = db-verify(db, dbf, NULL, NULL, flags); - rc = cvtdberr(dbi, db-verify, rc, _debug); + rc = db3verify(dbi, dbf, _dbsubfile, _fp, flags); rpmlog(RPMLOG_DEBUG, D_(verified db index %s/%s\n), (dbhome ? dbhome : ), (dbfile ? dbfile : dbiBN)); - /* - * The DB handle may not be accessed again after - * DB-verify is called, regardless of its return. - */ - db = NULL; dbf = _free(dbf); } xx = dbenv-close(dbenv, 0); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 03-Oct-2009 23:00:17 Branch: HEAD Handle: 2009100321001600 Modified files: rpm/rpmdb db3.c dbconfig.c rpmdb.c Log: - dbi: refactor join key ducks-in-a-row code prior to using DB-join(). Summary: RevisionChanges Path 1.106 +83 -57 rpm/rpmdb/db3.c 1.68+3 -2 rpm/rpmdb/dbconfig.c 1.315 +121 -80rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.105 -r1.106 db3.c --- rpm/rpmdb/db3.c 2 Oct 2009 16:05:17 - 1.105 +++ rpm/rpmdb/db3.c 3 Oct 2009 21:00:16 - 1.106 @@ -1247,48 +1247,45 @@ return '\0'; } -static int _loadArgvTag(DBT * _r, HE_t he, uint32_t i) +static int loadDBT(DBT * _r, rpmTag tag, const void * _s, size_t ns) { -const char * s = he-p.argv[i]; -size_t ns = strlen(s); -uint8_t * t = NULL; +const char * s = _s; void * data = NULL; size_t size = 0; +uint8_t * t = NULL; +uint32_t i; int xx; -switch (he-tag) { +if (ns == 0) ns = strlen(s); +switch (tag) { case RPMTAG_FILEDIGESTS: - /* Filter out empty and odd file digests. */ + /* Convert hex to binary, filter out odd hex strings. */ if (ns 0 !(ns 1)) { - /* Convert hex to binary. */ - size = ns / 2; - data = t = xmalloc(size); - for (i = 0; i size; i++, t++, s += 2) + ns /= 2; + data = t = xmalloc(ns); + for (i = 0; i ns; i++, t++, s += 2) { + if (!(isxdigit(s[0]) isxdigit(s[1]))) + break; *t = (uint8_t) (nibble(s[0]) 4) | nibble(s[1]); + } + if (i == ns) + size = ns; + else + data = _free(data); } break; case RPMTAG_PUBKEYS: /* Extract pubkey id from the base64 blob. */ - data = t = xmalloc(32); - if ((size = xx = pgpExtractPubkeyFingerprint(s, t)) = 0) - data = t = _free(t); + t = xmalloc(32); + if ((xx = pgpExtractPubkeyFingerprint(s, t)) 0) { + data = t; + size = xx; + } else + t = _free(t); break; -case RPMTAG_CONFLICTYAMLENTRY: -case RPMTAG_OBSOLETEYAMLENTRY: -case RPMTAG_PROVIDEYAMLENTRY: -case RPMTAG_REQUIREYAMLENTRY: - /* Skip the YAML - ... lead-in mark up if present. */ - if (s[0] == '-' s[1] == ' ') { - s += 2; - ns -= 2; - } - /*...@fallthrough@*/ default: - /* Filter out empty strings. */ - if (*s ns 0) { - data = (void *) xstrdup(s); - size = ns; - } + data = (void *) memcpy(xmalloc(ns), _s, ns); + size = ns; break; } if ((_r-data = data) != NULL) _r-flags |= DB_DBT_APPMALLOC; @@ -1316,10 +1313,15 @@ { HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); HE_t Fhe = memset(alloca(sizeof(*Fhe)), 0, sizeof(*Fhe)); +#ifdef NOTYET +HE_t FMhe = memset(alloca(sizeof(*FMhe)), 0, sizeof(*FMhe)); +#endif dbiIndex dbi = db-app_private; rpmdb rpmdb = NULL; Header h = NULL; DBT * A = NULL; +const char * s = NULL; +size_t ns = 0; int rc = DB_DONOTINDEX; /* assume no-op */ uint32_t i; @@ -1341,8 +1343,17 @@ switch (he-tag) { default: break; +#ifdef NOTYET +case RPMTAG_BASENAMES: +case RPMTAG_FILEPATHS: + /* Add the pesky trailing '/' to directories. */ + FMhe-tag = RPMTAG_FILEMODES; + (void) headerGet(h, FMhe, 0); + break; +#endif case RPMTAG_REQUIREYAMLENTRY: case RPMTAG_REQUIRENAME: + /* The Requires: F is needed to filter install context dependencies. */ Fhe-tag = RPMTAG_REQUIREFLAGS; (void) headerGet(h, Fhe, 0); break; @@ -1383,9 +1394,8 @@ break; } if (he-c == 1) { - _r-flags = DB_DBT_APPMALLOC; - _r-data = _u; - _r-size = _ulen; + /* XXX is it worth avoiding the realloc here? */ + (void) loadDBT(A, he-tag, _u, _ulen); break; } _r-flags = DB_DBT_MULTIPLE | DB_DBT_APPMALLOC; @@ -1397,21 +1407,18 @@ /* Don't add identical (key,val) item to secondary. */ if (i 0 _u[-1] == _u[0])
[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 04-Oct-2009 00:17:49 Branch: HEAD Handle: 2009100322174900 Modified files: rpm/rpmdb db3.c dbconfig.c rpmdb.c Log: - dbi: permit RPMTAG_DIRNAMES with DB_DUPSORT and 4b join key. Summary: RevisionChanges Path 1.107 +1 -1 rpm/rpmdb/db3.c 1.69+0 -3 rpm/rpmdb/dbconfig.c 1.316 +10 -28 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.106 -r1.107 db3.c --- rpm/rpmdb/db3.c 3 Oct 2009 21:00:16 - 1.106 +++ rpm/rpmdb/db3.c 3 Oct 2009 22:17:49 - 1.107 @@ -304,7 +304,7 @@ static size_t nDBTflags = sizeof(DBTflags) / sizeof(DBTflags[0]); static char * fmtDBT(const DBT * K, char * te) { -static size_t keymax = 40; +static size_t keymax = 35; int unprintable; uint32_t i; @@ . patch -p0 '@@ .' Index: rpm/rpmdb/dbconfig.c $ cvs diff -u -r1.68 -r1.69 dbconfig.c --- rpm/rpmdb/dbconfig.c 3 Oct 2009 21:00:16 - 1.68 +++ rpm/rpmdb/dbconfig.c 3 Oct 2009 22:17:49 - 1.69 @@ -645,9 +645,6 @@ default: dbi-dbi_jlen = 1 * sizeof(rpmuint32_t); break; -#ifndef DYING -case RPMTAG_DIRNAMES: -#endif case RPMTAG_BASENAMES: dbi-dbi_jlen = 2 * sizeof(rpmuint32_t); break; @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.315 -r1.316 rpmdb.c --- rpm/rpmdb/rpmdb.c 3 Oct 2009 21:00:16 - 1.315 +++ rpm/rpmdb/rpmdb.c 3 Oct 2009 22:17:49 - 1.316 @@ -1636,25 +1636,7 @@ if (bingo (dbi = dbiOpen(db, RPMTAG_DIRNAMES, 0)) != NULL) { dbiIndexSet dnset = NULL; - /* Load the dirnames index set. */ - dbcursor = NULL; - xx = dbiCopen(dbi, dbi-dbi_txnid, dbcursor, 0); - -/*...@-temptrans@*/ -key-data = (void *) dirName; -/*...@=temptrans@*/ -key-size = (UINT32_T) strlen(dirName); -if (key-size == 0) key-size++; /* XXX / fixup. */ - - rc = dbiGet(dbi, dbcursor, key, data, DB_SET); - if (rc 0) { - rpmlog(RPMLOG_ERR, - _(error(%d) getting records from %s index\n), - rc, tagName(dbi-dbi_rpmtag)); - } - if (rc == 0) - (void) dbt2set(dbi, data, dnset); - xx = dbiCclose(dbi, dbcursor, 0); + rc = _joinKeys(dbi, dirName, strlen(dirName), dnset); /* If dnset is non-empty, then attempt Plan A intersection. */ if (rc == 0 dnset dnset-count 0) { @@ -3630,6 +3612,12 @@ xx = headerGet(h, he, 0); /*...@=compmempass@*/ /*...@switchbreak@*/ break; + case RPMTAG_DIRNAMES: + case RPMTAG_TRIGGERNAME: + xx = headerGet(h, he, 0); + if (he-c 1) + qsort(he-p.argv, he-c, sizeof(he-p.argv[0]), argvCmp); + /*...@switchbreak@*/ break; default: /*...@-compmempass@*/ xx = headerGet(h, he, 0); @@ -3688,16 +3676,10 @@ isInstallPreReq(requireFlags.ui32p[i])) /*...@innercontinue@*/ continue; /*...@switchbreak@*/ break; + case RPMTAG_DIRNAMES: case RPMTAG_TRIGGERNAME: - if (i) {/* don't add duplicates */ - int j; - for (j = 0; j i; j++) { - if (!strcmp(he-p.argv[i], he-p.argv[j])) - /*...@innerbreak@*/ break; - } - if (j i) - /*...@innercontinue@*/ continue; - } + if (i 0 !strcmp(he-p.argv[i], he-p.argv[i-1])) + /*...@innercontinue@*/ continue; /*...@switchbreak@*/ break; default: /*...@switchbreak@*/ break; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 20-Sep-2009 02:31:26 Branch: HEAD Handle: 2009092000312600 Modified files: rpm/rpmdb db3.c Log: - oops, get the right file checked in. Summary: RevisionChanges Path 1.96+0 -5 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.95 -r1.96 db3.c --- rpm/rpmdb/db3.c 20 Aug 2009 15:54:09 - 1.95 +++ rpm/rpmdb/db3.c 20 Sep 2009 00:31:26 - 1.96 @@ -1376,11 +1376,6 @@ } else { assert(rpmdb rpmdb-db_dbenv); dbenv = rpmdb-db_dbenv; -#define PLD_CHROOT -#ifdef PLD_CHROOT - if (rpmdb-db_chrootDone) - xx = dbenv-set_data_dir(dbenv, dbhome); -#endif rpmdb-db_opens++; } /*...@=mods@*/ @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.h sqlite.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 20-Sep-2009 04:00:51 Branch: HEAD Handle: 2009092002005100 Modified files: rpm/rpmdb db3.c dbconfig.c rpmdb.h sqlite.c Log: - rpmdb: remove redundant parameters with DB_CONFIG. Summary: RevisionChanges Path 1.100 +0 -86 rpm/rpmdb/db3.c 1.63+0 -14 rpm/rpmdb/dbconfig.c 1.97+0 -1 rpm/rpmdb/rpmdb.h 1.40+2 -0 rpm/rpmdb/sqlite.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.99 -r1.100 db3.c --- rpm/rpmdb/db3.c 20 Sep 2009 01:33:55 - 1.99 +++ rpm/rpmdb/db3.c 20 Sep 2009 02:00:51 - 1.100 @@ -395,88 +395,12 @@ } /* Locking: */ - /* dbenv-set_lk_conflicts(???) */ -if (dbi-dbi_lk_detect) { - xx = dbenv-set_lk_detect(dbenv, dbi-dbi_lk_detect); - xx = cvtdberr(dbi, dbenv-set_lk_detect, xx, _debug); -} -#if !(DB_VERSION_MAJOR == 4 DB_VERSION_MINOR = 1) -if (dbi-dbi_lk_max_lockers) { - xx = dbenv-set_lk_max_lockers(dbenv, dbi-dbi_lk_max_lockers); - xx = cvtdberr(dbi, dbenv-set_lk_max_lockers, xx, _debug); -} -if (dbi-dbi_lk_max_locks) { - xx = dbenv-set_lk_max_locks(dbenv, dbi-dbi_lk_max_locks); - xx = cvtdberr(dbi, dbenv-set_lk_max_locks, xx, _debug); -} -if (dbi-dbi_lk_max_objects) { - xx = dbenv-set_lk_max_objects(dbenv, dbi-dbi_lk_max_objects); - xx = cvtdberr(dbi, dbenv-set_lk_max_objects, xx, _debug); -} /* Logging: */ -if (dbi-dbi_lg_bsize) { - xx = dbenv-set_lg_bsize(dbenv, dbi-dbi_lg_bsize); - xx = cvtdberr(dbi, dbenv-set_lg_bsize, xx, _debug); -} -if (dbi-dbi_lg_dir) { - xx = dbenv-set_lg_dir(dbenv, dbi-dbi_lg_dir); - xx = cvtdberr(dbi, dbenv-set_lg_dir, xx, _debug); -} -if (dbi-dbi_lg_filemode) { - xx = dbenv-set_lg_filemode(dbenv, dbi-dbi_lg_filemode); - xx = cvtdberr(dbi, dbenv-set_lg_filemode, xx, _debug); -} -if (dbi-dbi_lg_max) { - xx = dbenv-set_lg_max(dbenv, dbi-dbi_lg_max); - xx = cvtdberr(dbi, dbenv-set_lg_max, xx, _debug); -} -if (dbi-dbi_lg_regionmax) { - xx = dbenv-set_lg_regionmax(dbenv, dbi-dbi_lg_regionmax); - xx = cvtdberr(dbi, dbenv-set_lg_regionmax, xx, _debug); -} -#endif - /* Memory pool: */ - /* Mutexes: */ -if (dbi-dbi_mutex_align) { - xx = dbenv-mutex_set_align(dbenv, dbi-dbi_mutex_align); - xx = cvtdberr(dbi, dbenv-mutex_set_align, xx, _debug); -} -if (dbi-dbi_mutex_increment) { - xx = dbenv-mutex_set_increment(dbenv, dbi-dbi_mutex_increment); - xx = cvtdberr(dbi, dbenv-mutex_set_increment, xx, _debug); -} -if (dbi-dbi_mutex_max) { - xx = dbenv-mutex_set_max(dbenv, dbi-dbi_mutex_max); - xx = cvtdberr(dbi, dbenv-mutex_set_max, xx, _debug); -} -if (dbi-dbi_mutex_tas_spins) { - xx = dbenv-mutex_set_tas_spins(dbenv, dbi-dbi_mutex_tas_spins); - xx = cvtdberr(dbi, dbenv-mutex_set_tas_spins, xx, _debug); -} - /* Replication: */ -/* dbenv-rep_set_config */ -/* dbenv-rep_set_limit */ -/* dbenv-rep_set_nsites */ -/* dbenv-rep_set_priority */ -/* dbenv-rep_set_timeout */ -/* dbenv-rep_set_transport */ - /* Sequences: */ - /* Transactions: */ -if (dbi-dbi_tx_max) { - xx = dbenv-set_tx_max(dbenv, dbi-dbi_tx_max); - xx = cvtdberr(dbi, dbenv-set_tx_max, xx, _debug); -} -/* XXX dbenv-txn_checkpoint */ -/* XXX dbenv-txn_recover */ -/* XXX dbenv-txn_stat */ - /* 4.1 dbenv-set_timeout(???) */ - /* 4.1: dbenv-set_tx_timestamp(???) */ - /* Other: */ if (dbi-dbi_no_fsync) { @@ -982,16 +906,6 @@ dbenv-set_errpfx(dbenv, rpmdb-db_errpfx); /* dbenv-set_paniccall(???) */ /*...@=noeffectuncon@*/ -#if !(DB_VERSION_MAJOR == 4 DB_VERSION_MINOR = 3) - xx = dbenv-set_verbose(dbenv, DB_VERB_CHKPOINT, - (dbi-dbi_verbose DB_VERB_CHKPOINT)); -#endif - xx = dbenv-set_verbose(dbenv, DB_VERB_DEADLOCK, - (dbi-dbi_verbose DB_VERB_DEADLOCK)); - xx = dbenv-set_verbose(dbenv, DB_VERB_RECOVERY, - (dbi-dbi_verbose DB_VERB_RECOVERY)); - xx = dbenv-set_verbose(dbenv, DB_VERB_WAITSFOR, - (dbi-dbi_verbose DB_VERB_WAITSFOR)); if (dbi-dbi_tmpdir) { /*...@-mods@*/ @@ . patch -p0 '@@ .'
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 20-Aug-2009 17:54:09 Branch: HEAD Handle: 2009082015540900 Modified files: rpm/rpmdb db3.c Log: - balance curly brckets wrto #ifdef's. Summary: RevisionChanges Path 1.95+3 -2 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.94 -r1.95 db3.c --- rpm/rpmdb/db3.c 23 May 2009 15:48:44 - 1.94 +++ rpm/rpmdb/db3.c 20 Aug 2009 15:54:09 - 1.95 @@ -1242,10 +1242,11 @@ long size = -1; if (stat(dbf, sb) == 0) size = (long)sb.st_size; - if (access(dbf, F_OK) == -1 || size == 0) { + if (access(dbf, F_OK) == -1 || size == 0) #else - if (access(dbf, F_OK) == -1) { + if (access(dbf, F_OK) == -1) #endif + { /* ... non-existent (or unwritable) DBENV, will create ... */ dbi-dbi_oeflags |= DB_CREATE; dbi-dbi_eflags = ~DB_JOINENV; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.c rpmdb.h
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Alexey Tourbin Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 18-Aug-2008 08:16:08 Branch: HEAD Handle: 2008081806160800 Modified files: rpm/rpmdb db3.c dbconfig.c rpmdb.c rpmdb.h Log: rpmdb: minor changes Summary: RevisionChanges Path 1.92+4 -4 rpm/rpmdb/db3.c 1.55+1 -1 rpm/rpmdb/dbconfig.c 1.263 +10 -11 rpm/rpmdb/rpmdb.c 1.81+1 -1 rpm/rpmdb/rpmdb.h patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.91 -r1.92 db3.c --- rpm/rpmdb/db3.c 2 Aug 2008 16:36:10 - 1.91 +++ rpm/rpmdb/db3.c 18 Aug 2008 06:16:08 - 1.92 @@ -505,7 +505,7 @@ xx = dbenv-set_tx_max(dbenv, dbi-dbi_tx_max); xx = cvtdberr(dbi, dbenv-set_tx_max, xx, _debug); } -/* XXX dbenv-txn_checkpoint */ +/* XXX dbenv-txn_checkpoint */ /* XXX dbenv-txn_recover */ /* XXX dbenv-txn_stat */ /* 4.1 dbenv-set_timeout(???) */ @@ -839,7 +839,7 @@ int rc = 0; if (db != NULL) { -#if (DB_VERSION_MAJOR == 3 DB_VERSION_MINOR == 3 DB_VERSION_PATCH == 11) \ +#if (DB_VERSION_MAJOR == 3 DB_VERSION_MINOR == 3 DB_VERSION_PATCH = 11) \ || (DB_VERSION_MAJOR == 4) int isswapped = 0; rc = db-get_byteswapped(db, isswapped); @@ -1062,7 +1062,7 @@ (dbhome ? dbhome : ), (dbfile ? dbfile : dbiBN)); - /* + /* * The DB handle may not be accessed again after * DB-verify is called, regardless of its return. */ @@ -1564,7 +1564,7 @@ #endif if (rc == 0 dbi_type == DB_UNKNOWN) { -#if (DB_VERSION_MAJOR == 3 DB_VERSION_MINOR == 3 DB_VERSION_PATCH == 11) \ +#if (DB_VERSION_MAJOR == 3 DB_VERSION_MINOR == 3 DB_VERSION_PATCH = 11) \ || (DB_VERSION_MAJOR == 4) xx = db-get_type(db, dbi_type); if (xx == 0) @@ . patch -p0 '@@ .' Index: rpm/rpmdb/dbconfig.c $ cvs diff -u -r1.54 -r1.55 dbconfig.c --- rpm/rpmdb/dbconfig.c 31 Jul 2008 16:58:56 - 1.54 +++ rpm/rpmdb/dbconfig.c 18 Aug 2008 06:16:08 - 1.55 @@ -176,7 +176,7 @@ DB_DSYNC_DB DB_DSYNC_LOG DB_LOG_AUTOREMOVE -DB_LOG_BUFFER_FULL ??? +DB_LOG_BUFFER_FULL /* ??? */ DB_LOG_INMEMORY DB_NOLOCKING DB_MULTIVERSION @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.262 -r1.263 rpmdb.c --- rpm/rpmdb/rpmdb.c 8 Aug 2008 03:19:31 - 1.262 +++ rpm/rpmdb/rpmdb.c 18 Aug 2008 06:16:08 - 1.263 @@ -1158,7 +1158,7 @@ /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ if (!oneshot) { - _db_filter_dups = rpmExpandNumeric(%{_filterdbdups}); + _db_filter_dups = rpmExpandNumeric(%{?_filterdbdups}); oneshot = 1; } @@ -1177,7 +1177,7 @@ db-db_root = rpmdbURIPath( (root *root ? root : _DB_ROOT) ); db-db_home = rpmdbURIPath( (home *home ? home : _DB_HOME) ); -if (!(db-db_home db-db_home[0])) { +if (!(db-db_home db-db_home[0] db-db_home[0] != '%')) { rpmlog(RPMLOG_ERR, _(no dbpath has been set\n)); db-db_root = _free(db-db_root); db-db_home = _free(db-db_home); @@ -1322,7 +1322,7 @@ /* XXX python/rpmmodule.c */ int rpmdbOpen (const char * prefix, rpmdb *dbp, int mode, int perms) { -int _dbapi = rpmExpandNumeric(%{_dbapi}); +int _dbapi = rpmExpandNumeric(%{?_dbapi}); return rpmdbOpenDatabase(prefix, NULL, _dbapi, dbp, mode, perms, 0); } @@ -2878,6 +2878,7 @@ if (db-db_tags != NULL) for (dbix = 0; dbix db-db_ndbi; dbix++) { + dbiIndex dbi; DBC * dbcursor = NULL; DBT k = DBT_INIT; DBT v = DBT_INIT; @@ -2887,7 +2888,6 @@ rpmTag rpmtag = dbiTag-tag; const char * dbiBN = (dbiTag-str != NULL ? dbiTag-str : tagName(rpmtag)); - dbiIndex dbi; rpmuint8_t * bin = NULL; int i; @@ -2939,7 +2939,6 @@ if (!xx) continue; /[EMAIL PROTECTED]@*/ break; - } dbi = dbiOpen(db, he-tag, 0); @@ -3065,7 +3064,7 @@ if (k.size == 0) k.size = (UINT32_T) strlen((char
[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 25-Jul-2007 17:04:33 Branch: HEAD Handle: 2007072516043200 Modified files: rpm/rpmdb db3.c dbconfig.c Log: add new 4.6.18 functionality. Summary: RevisionChanges Path 1.70+8 -0 rpm/rpmdb/db3.c 1.42+13 -0 rpm/rpmdb/dbconfig.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.69 -r1.70 db3.c --- rpm/rpmdb/db3.c 25 Jul 2007 14:40:50 - 1.69 +++ rpm/rpmdb/db3.c 25 Jul 2007 15:04:32 - 1.70 @@ -375,6 +375,14 @@ #endif xx = dbenv-set_verbose(dbenv, DB_VERB_WAITSFOR, (dbi-dbi_verbose DB_VERB_WAITSFOR)); +#if defined(DB_VERB_FILEOPS) + xx = dbenv-set_verbose(dbenv, DB_VERB_FILEOPS, + (dbi-dbi_verbose DB_VERB_FILEOPS)); +#endif +#if defined(DB_VERB_FILEOPS_ALL) + xx = dbenv-set_verbose(dbenv, DB_VERB_FILEOPS_ALL, + (dbi-dbi_verbose DB_VERB_FILEOPS_ALL)); +#endif if (dbi-dbi_mmapsize) { xx = dbenv-set_mp_mmapsize(dbenv, dbi-dbi_mmapsize); @@ . patch -p0 '@@ .' Index: rpm/rpmdb/dbconfig.c $ cvs diff -u -r1.41 -r1.42 dbconfig.c --- rpm/rpmdb/dbconfig.c 16 Jul 2007 01:32:32 - 1.41 +++ rpm/rpmdb/dbconfig.c 25 Jul 2007 15:04:32 - 1.42 @@ -145,6 +145,10 @@ { use_environ, 0,POPT_BIT_SET,db3dbi.dbi_eflags, DB_USE_ENVIRON, NULL, NULL }, #endif +#if defined(WITH_DB) defined(DB_IGNORE_LEASE) + { ignore_lease, 0,POPT_BIT_SET, db3dbi.dbi_eflags, DB_IGNORE_LEASE, + NULL, NULL }, +#endif #if defined(WITH_DB) defined(DB_TXN_SYNC) { txn_sync, 0,POPT_BIT_SET, db3dbi.dbi_tflags, DB_TXN_SYNC, @@ -154,6 +158,10 @@ { txn_nowait,0,POPT_BIT_SET, db3dbi.dbi_tflags, DB_TXN_NOWAIT, NULL, NULL }, #endif +#if defined(WITH_DB) defined(DB_TXN_WAIT) + { txn_wait,0,POPT_BIT_SET,db3dbi.dbi_tflags, DB_TXN_WAIT, + NULL, NULL }, +#endif #if defined(WITH_DB) defined(NOTYET) DB_AUTO_COMMIT @@ -421,6 +429,11 @@ #endif /* XXX DB_ENV-set_timeout */ +#if defined(WITH_DB) defined(NOTYET) +DB_SET_LOCK_TIMEOUT +DB_SET_TXN_NOW +DB_SET_TXN_TIMEOUT +#endif /* XXX DB_ENV-get_timeout */ /* Logging: */ @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/rpmdb/ db3.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 10-Jul-2007 19:55:54 Branch: HEAD Handle: 2007071018555400 Modified files: rpm/rpmdb db3.c Log: db3.c: db_errcall has changed with later Berkeley DB. Summary: RevisionChanges Path 1.67+2 -2 rpm/rpmdb/db3.c patch -p0 '@@ .' Index: rpm/rpmdb/db3.c $ cvs diff -u -r1.66 -r1.67 db3.c --- rpm/rpmdb/db3.c 9 Jul 2007 22:31:57 - 1.66 +++ rpm/rpmdb/db3.c 10 Jul 2007 17:55:54 - 1.67 @@ -323,7 +323,7 @@ /* 4.1: dbenv-set_data_dir(???) */ /* 4.1: dbenv-set_encrypt(???) */ -dbenv-set_errcall(dbenv, rpmdb-db_errcall); +dbenv-set_errcall(dbenv, (void *)rpmdb-db_errcall); dbenv-set_errfile(dbenv, rpmdb-db_errfile); dbenv-set_errpfx(dbenv, rpmdb-db_errpfx); /[EMAIL PROTECTED]@*/ @@ -944,7 +944,7 @@ if (rc || dbenv == NULL) goto exit; /[EMAIL PROTECTED]@*/ /* FIX: annotate db3 methods */ - dbenv-set_errcall(dbenv, rpmdb-db_errcall); + dbenv-set_errcall(dbenv, (void *)rpmdb-db_errcall); dbenv-set_errfile(dbenv, rpmdb-db_errfile); dbenv-set_errpfx(dbenv, rpmdb-db_errpfx); /* dbenv-set_paniccall(???) */ @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org