Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cbca6e83 authored by Paul Crowley's avatar Paul Crowley Committed by android-build-merger
Browse files

fsync directories as well as files

am: 0555f989

Change-Id: Ib15833aaa3661c88a037aa14027159d39e4899f0
parents 88ddf773 0555f989
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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 {