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

Commit 604c583c 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
(cherry picked from commit 96392b97)
parent 02b64725
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
@@ -1222,8 +1217,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;
    }

@@ -1409,8 +1403,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) {