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

Commit 37ad1f12 authored by Michael Runge's avatar Michael Runge Committed by Android (Google) Code Review
Browse files

Merge "Force write to disk while doing uncrypt" into lmp-mr1-dev

parents 5b9c4ce5 4b542391
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -164,7 +164,8 @@ char* parse_recovery_command_file()
    if (f == NULL) {
        return NULL;
    }
    FILE* fo = fopen(RECOVERY_COMMAND_FILE_TMP, "w");
    int fd = open(RECOVERY_COMMAND_FILE_TMP, O_WRONLY | O_SYNC);
    FILE* fo = fdopen(fd, "w");

    while (fgets(temp, sizeof(temp), f)) {
        printf("read: %s", temp);
@@ -175,6 +176,7 @@ char* parse_recovery_command_file()
        fputs(temp, fo);
    }
    fclose(f);
    fsync(fd);
    fclose(fo);

    if (fn) {
@@ -190,7 +192,8 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de
    struct stat sb;
    int ret;

    FILE* mapf = fopen(map_file, "w");
    int mapfd = open(map_file, O_WRONLY | O_SYNC);
    FILE* mapf = fdopen(mapfd, "w");

    ret = stat(path, &sb);
    if (ret != 0) {
@@ -232,7 +235,7 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de

    int wfd = -1;
    if (encrypted) {
        wfd = open(blk_dev, O_WRONLY);
        wfd = open(blk_dev, O_WRONLY | O_SYNC);
        if (wfd < 0) {
            ALOGE("failed to open fd for writing: %s\n", strerror(errno));
            return -1;
@@ -302,9 +305,11 @@ int produce_block_map(const char* path, const char* map_file, const char* blk_de
        fprintf(mapf, "%d %d\n", ranges[i*2], ranges[i*2+1]);
    }

    fsync(mapfd);
    fclose(mapf);
    close(fd);
    if (encrypted) {
        fsync(wfd);
        close(wfd);
    }

@@ -318,7 +323,7 @@ void wipe_misc() {
        struct fstab_rec* v = &fstab->recs[i];
        if (!v->mount_point) continue;
        if (strcmp(v->mount_point, "/misc") == 0) {
            int fd = open(v->blk_device, O_WRONLY);
            int fd = open(v->blk_device, O_WRONLY | O_SYNC);
            uint8_t zeroes[1088];   // sizeof(bootloader_message) from recovery
            memset(zeroes, 0, sizeof(zeroes));

@@ -333,7 +338,7 @@ void wipe_misc() {
                    written += w;
                }
            }

            fsync(fd);
            close(fd);
        }
    }