diff options
| author | 2019-07-23 09:57:39 -0700 | |
|---|---|---|
| committer | 2019-07-23 09:57:39 -0700 | |
| commit | cbca6e836f72f2f134dc9861486d28eb6533bb30 (patch) | |
| tree | 3b9fb1ff9e52b30259812ea6aa60a709d0c47468 | |
| parent | 88ddf773bd8c3fd22228b73e1a7ecd0bc8ba3be4 (diff) | |
| parent | 0555f98949f52704f2d6f846423ab63c54f71457 (diff) | |
fsync directories as well as files
am: 0555f98949
Change-Id: Ib15833aaa3661c88a037aa14027159d39e4899f0
| -rw-r--r-- | services/core/java/com/android/server/locksettings/LockSettingsStorage.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java index f0e431ee0354..84ae7c790a74 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java @@ -48,6 +48,8 @@ import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; +import java.nio.channels.FileChannel; +import java.nio.file.StandardOpenOption; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -390,6 +392,17 @@ class LockSettingsStorage { return stored; } + private void fsyncDirectory(File directory) { + try { + try (FileChannel file = FileChannel.open(directory.toPath(), + StandardOpenOption.READ)) { + file.force(true); + } + } catch (IOException e) { + Slog.e(TAG, "Error syncing directory: " + directory, e); + } + } + private void writeFile(String name, byte[] hash) { synchronized (mFileWriteLock) { RandomAccessFile raf = null; @@ -406,6 +419,7 @@ class LockSettingsStorage { raf.write(hash, 0, hash.length); } raf.close(); + fsyncDirectory((new File(name)).getAbsoluteFile().getParentFile()); } catch (IOException e) { Slog.e(TAG, "Error writing to file " + e); } finally { |