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:55:35 Branch: HEAD Handle: 2009120903553302 Modified files: rpm CHANGES rpm/lib rpmts.c Log: - rpmts: take checkpoints beroe and after --rebuilddb. Summary: Revision Changes Path 1.3188 +1 -0 rpm/CHANGES 2.178 +16 -7 rpm/lib/rpmts.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3187 -r1.3188 CHANGES --- rpm/CHANGES 8 Dec 2009 21:20:34 -0000 1.3187 +++ rpm/CHANGES 9 Dec 2009 03:55:33 -0000 1.3188 @@ -1,5 +1,6 @@ 5.2b1 -> 5.3a1 + - 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. - jbj: rpmdb: consolidate primary key swabbing to network order. @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmts.c ============================================================================ $ cvs diff -u -r2.177 -r2.178 rpmts.c --- rpm/lib/rpmts.c 7 Dec 2009 17:53:47 -0000 2.177 +++ rpm/lib/rpmts.c 9 Dec 2009 03:55:35 -0000 2.178 @@ -116,10 +116,8 @@ ts->dbmode = dbmode; rc = rpmdbOpen(ts->rootDir, &ts->rdb, ts->dbmode, 0644); if (rc) { - const char * dn; - dn = rpmGetPath(ts->rootDir, "%{_dbpath}", NULL); - rpmlog(RPMLOG_ERR, - _("cannot open Packages database in %s\n"), dn); + const char * dn = rpmGetPath(ts->rootDir, "%{_dbpath}", NULL); + rpmlog(RPMLOG_ERR, _("cannot open Packages database in %s\n"), dn); dn = _free(dn); } return rc; @@ -128,11 +126,22 @@ int rpmtsRebuildDB(rpmts ts) { void * lock = rpmtsAcquireLock(ts); - int rc = rpmtsOpenDB(ts, ts->dbmode); + int rc; + + rc = rpmtsOpenDB(ts, O_RDWR); + if (rc) goto exit; - if (rc == 0) - rc = rpmdbRebuild(ts->rootDir, + rc = rpmtxnCheckpoint(rpmtsGetRdb(ts)); + if (rc) goto exit; + + rc = rpmdbRebuild(ts->rootDir, (!(rpmtsVSFlags(ts) & RPMVSF_NOHDRCHK) ? ts : NULL)); + if (rc) goto exit; + + rc = rpmtxnCheckpoint(rpmtsGetRdb(ts)); + if (rc) goto exit; + +exit: lock = rpmtsFreeLock(lock); return rc; } @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org