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

Commit 65c230f4 authored by Tao Bao's avatar Tao Bao Committed by Gerrit Code Review
Browse files

Merge "Revert "Zero blocks before BLKDISCARD""

parents 2490dbc9 9c67aa2d
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