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 96392b97f6)
This commit is contained in:
+5
-9
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user