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

Commit 9c67aa2d 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: I016e3b47313e3113f01bb4f8eb3c14856bdc35e5
(cherry picked from commit 7125f959)
parent 2490dbc9
Loading
Loading
Loading
Loading
+1 −17
Original line number Diff line number Diff line
@@ -1465,7 +1465,6 @@ pcdout:
static int PerformCommandErase(CommandParameters* params) {
    char* range = NULL;
    int i;
    int j;
    int rc = -1;
    RangeSet* tgt = NULL;
    struct stat st;
@@ -1492,7 +1491,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;
    }

@@ -1501,22 +1500,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