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

Commit 96392b97 authored by Sami Tolvanen's avatar Sami Tolvanen
Browse files

Zero blocks before BLKDISCARD

Due to observed BLKDISCARD flakiness, overwrite blocks that we want
to discard with zeros first to avoid later issues with dm-verity if
BLKDISCARD is not successful.

Bug: 20614277
Bug: 20881595
Change-Id: I0280fe115b020dcab35f49041fb55b7f8e793da3
parent 3f9db6af
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -39,11 +39,6 @@

#define BLOCKSIZE 4096

// Set this to 0 to interpret 'erase' transfers to mean do a
// BLKDISCARD ioctl (the normal behavior).  Set to 1 to interpret
// erase to mean fill the region with zeroes.
#define DEBUG_ERASE  0

#ifndef BLKDISCARD
#define BLKDISCARD _IO(0x12,119)
#endif
@@ -1283,8 +1278,7 @@ static int PerformCommandZero(CommandParameters* params) {
    }

    if (params->cmdname[0] == 'z') {
        // Update only for the zero command, as the erase command will call
        // this if DEBUG_ERASE is defined.
        // Update only for the zero command, as the erase command will call this
        params->written += tgt->size;
    }

@@ -1470,8 +1464,10 @@ static int PerformCommandErase(CommandParameters* params) {
    struct stat st;
    uint64_t blocks[2];

    if (DEBUG_ERASE) {
        return PerformCommandZero(params);
    // Always zero the blocks first to work around possibly flaky BLKDISCARD
    // Bug: 20881595
    if (PerformCommandZero(params) != 0) {
        goto pceout;
    }

    if (!params) {