[CVS] RPM: rpm/rpmdb/ db3.c rpmdb.c

2009-12-16 Thread Jeff Johnson
  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 rpmdb.c

2009-12-08 Thread Jeff Johnson
  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 rpmdb.c

2009-10-07 Thread Jeff Johnson
  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 rpmdb.c

2009-10-06 Thread Jeff Johnson
  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);
  @@