summaryrefslogtreecommitdiff
path: root/lib/rpmdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rpmdb.c')
-rw-r--r--lib/rpmdb.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/rpmdb.c b/lib/rpmdb.c
index e9ebaa2e7..3edf6fb88 100644
--- a/lib/rpmdb.c
+++ b/lib/rpmdb.c
@@ -92,6 +92,7 @@ static int buildIndexes(rpmdb db)
}
rpmdbFreeIterator(mi);
+ dbCtrl(db, DB_CTRL_INDEXSYNC);
dbCtrl(db, DB_CTRL_UNLOCK_RW);
dbSetFSync(db, !db->cfg.db_no_fsync);
@@ -1051,6 +1052,7 @@ static int miFreeHeader(rpmdbMatchIterator mi, dbiIndex dbi)
dbCtrl(mi->mi_db, DB_CTRL_LOCK_RW);
rc = pkgdbPut(dbi, mi->mi_dbc, mi->mi_prevoffset,
hdrBlob, hdrLen);
+ dbCtrl(mi->mi_db, DB_CTRL_INDEXSYNC);
dbCtrl(mi->mi_db, DB_CTRL_UNLOCK_RW);
unblockSignals(&signalMask);
@@ -2162,6 +2164,7 @@ int rpmdbRemove(rpmdb db, unsigned int hdrNum)
}
}
+ dbCtrl(db, DB_CTRL_INDEXSYNC);
dbCtrl(db, DB_CTRL_UNLOCK_RW);
(void) unblockSignals(&signalMask);
@@ -2384,6 +2387,7 @@ int rpmdbAdd(rpmdb db, Header h)
}
}
+ dbCtrl(db, DB_CTRL_INDEXSYNC);
dbCtrl(db, DB_CTRL_UNLOCK_RW);
(void) unblockSignals(&signalMask);
@@ -2662,6 +2666,9 @@ int rpmdbCtrl(rpmdb db, rpmdbCtrlOp ctrl)
case RPMDB_CTRL_UNLOCK_RW:
dbctrl = DB_CTRL_UNLOCK_RW;
break;
+ case RPMDB_CTRL_INDEXSYNC:
+ dbctrl = DB_CTRL_INDEXSYNC;
+ break;
}
return dbctrl ? dbCtrl(db, dbctrl) : 1;
}