From a7de3845507b7bf57a2c7b26fb08f05b193697d6 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Tue, 7 Jul 2009 14:50:26 -0700 Subject: [PATCH] Only write to the pending-backup journal when necessary We now only commit to the pending-backup journal on disk the first time that a given package is added to the backup set. This avoids a lot of write thrashing of the disk, particularly since Settings tends to call dataChanged() a great many times during boot, while the Settings UI is in use, etc. --- .../java/com/android/server/BackupManagerService.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java index 80697a1795e78..1fd36d28a6cce 100644 --- a/services/java/com/android/server/BackupManagerService.java +++ b/services/java/com/android/server/BackupManagerService.java @@ -1212,10 +1212,12 @@ class BackupManagerService extends IBackupManager.Stub { // Add the caller to the set of pending backups. If there is // one already there, then overwrite it, but no harm done. BackupRequest req = new BackupRequest(app, false); - mPendingBackups.put(app, req); - - // Journal this request in case of crash - writeToJournalLocked(packageName); + if (mPendingBackups.put(app, req) == null) { + // Journal this request in case of crash. The put() + // operation returned null when this package was not already + // in the set; we want to avoid touching the disk redundantly. + writeToJournalLocked(packageName); + } } }