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-Dec-2009 04:59:58 Branch: HEAD Handle: 2009120903595700 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: inline rpmdbOpenAll for inplace --rebuilddb. sadly DB->associate(..., DB_CREATE) is not free threaded w -fopenmp. oh well. Summary: Revision Changes Path 1.3189 +2 -0 rpm/CHANGES 1.352 +26 -12 rpm/rpmdb/rpmdb.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3188 -r1.3189 CHANGES --- rpm/CHANGES 9 Dec 2009 03:55:33 -0000 1.3188 +++ rpm/CHANGES 9 Dec 2009 03:59:57 -0000 1.3189 @@ -1,5 +1,7 @@ 5.2b1 -> 5.3a1 + - jbj: rpmdb: inline rpmdbOpenAll for inplace --rebuilddb. sadly + DB->associate(..., DB_CREATE) is not free threaded w -fopenmp. oh well. - jbj: rpmts: take checkpoints beroe and after --rebuilddb. - jbj: rpmdb: do in-place rebuilddb, opt-in for now. - jbj: rpmdb: lazily create non-existent secondary indices. @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/rpmdb.c ============================================================================ $ cvs diff -u -r1.351 -r1.352 rpmdb.c --- rpm/rpmdb/rpmdb.c 8 Dec 2009 21:20:35 -0000 1.351 +++ rpm/rpmdb/rpmdb.c 9 Dec 2009 03:59:57 -0000 1.352 @@ -778,20 +778,18 @@ int rpmdbOpenAll(rpmdb db) { - size_t dbix; int rc = 0; if (db == NULL) return -2; - if (db->db_tags != NULL && db->_dbi != NULL) + if (db->db_tags != NULL && db->_dbi != NULL) { + size_t dbix; for (dbix = 0; dbix < db->db_ndbi; dbix++) { - tagStore_t dbiTag = db->db_tags + dbix; - int tag = dbiTag->tag; - if (tag < 0) + if ((int)db->db_tags[dbix].tag < 0) continue; if (db->_dbi[dbix] != NULL) continue; - switch (tag) { + switch (db->db_tags[dbix].tag) { case RPMDBI_AVAILABLE: case RPMDBI_ADDED: case RPMDBI_REMOVED: @@ -805,8 +803,9 @@ default: /*...@switchbreak@*/ break; } - (void) dbiOpen(db, tag, db->db_flags); + (void) dbiOpen(db, db->db_tags[dbix].tag, db->db_flags); } + } return rc; } @@ -3636,13 +3635,28 @@ xx = rpmdbRemoveDatabase(myprefix, dbpath, _dbapi, dbiTags, dbiNTags); /* XXX Seqno update needs O_RDWR. */ - if (rpmdbOpenDatabase(myprefix, dbpath, _dbapi, &olddb, O_RDWR, 0644, 0)) { - rc = 1; + if (rpmdbOpenDatabase(myprefix, dbpath, _dbapi, &olddb, O_RDWR, 0644, 0)) goto exit; - } - _dbapi = olddb->db_api; - xx = rpmdbOpenAll(olddb); + { size_t dbix; + for (dbix = 0; dbix < dbiNTags; dbix++) { + switch (dbiTags[dbix].tag) { + case RPMDBI_AVAILABLE: + case RPMDBI_ADDED: + case RPMDBI_REMOVED: + case RPMDBI_DEPENDS: + case RPMDBI_BTREE: + case RPMDBI_HASH: + case RPMDBI_QUEUE: + case RPMDBI_RECNO: + continue; + /*...@notreached@*/ /*...@switchbreak@*/ break; + default: + /*...@switchbreak@*/ break; + } + (void) dbiOpen(olddb, dbiTags[dbix].tag, olddb->db_flags); + } + } xx = rpmdbClose(olddb); @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org