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

Commit 7125f959 authored by Tao Bao's avatar Tao Bao
Browse files

Revert "Zero blocks before BLKDISCARD"

This reverts commit b65f0272.

It slows down the update too much on some devices (e.g. increased
from 8 mins to 40 mins to take a full OTA update).

Bug: 22129621
Change-Id: I4e8d4f6734967caf4f0d19c734027f7b6c107370
parent c3dddce2
Loading
Loading
Loading
Loading
+1 −17
Original line number Diff line number Diff line
@@ -1404,7 +1404,6 @@ pcdout:
static int PerformCommandErase(CommandParameters* params) {
    char* range = NULL;
    int i;
    int j;
    int rc = -1;
    RangeSet* tgt = NULL;
    struct stat st;
@@ -1431,7 +1430,7 @@ static int PerformCommandErase(CommandParameters* params) {
    range = strtok_r(NULL, " ", &params->cpos);

    if (range == NULL) {
        fprintf(stderr, "missing target blocks for erase\n");
        fprintf(stderr, "missing target blocks for zero\n");
        goto pceout;
    }

@@ -1440,22 +1439,7 @@ static int PerformCommandErase(CommandParameters* params) {
    if (params->canwrite) {
        fprintf(stderr, " erasing %d blocks\n", tgt->size);

        allocate(BLOCKSIZE, &params->buffer, &params->bufsize);
        memset(params->buffer, 0, BLOCKSIZE);

        for (i = 0; i < tgt->count; ++i) {
            // Always zero the blocks first to work around possibly flaky BLKDISCARD
            // Bug: 20881595
            if (!check_lseek(params->fd, (off64_t) tgt->pos[i * 2] * BLOCKSIZE, SEEK_SET)) {
                goto pceout;
            }

            for (j = tgt->pos[i * 2]; j < tgt->pos[i * 2 + 1]; ++j) {
                if (write_all(params->fd, params->buffer, BLOCKSIZE) == -1) {
                    goto pceout;
                }
            }

            // offset in bytes
            blocks[0] = tgt->pos[i * 2] * (uint64_t) BLOCKSIZE;
            // length in bytes