hiphi: gpt-utils: FSync after block device writes
When markBoolSuccessful is invoked, we update the partition table. These writes should be synced before merge operation is resumed post OTA. If not, any crash before these writes are landed to backing storage will lead to incorrect switching of slots. BUG: 175711601 Test: Verify slot switching correctly after crash when merge in progress Change-Id: I2da9286490d5d063df0c9d4dc491e0fbf28f51bb Signed-off-by: Akilesh Kailash <akailash@google.com> Signed-off-by: sekaiacg <sekaiacg@gmail.com> Signed-off-by: 7Soldier <reg.fm4@gmail.com>
This commit is contained in:
parent
7bdb2813f0
commit
f70785956d
1 changed files with 10 additions and 3 deletions
|
@ -157,11 +157,18 @@ static int blk_rw(int fd, int rw, int64_t offset, uint8_t *buf, unsigned len)
|
|||
else
|
||||
r = read(fd, buf, len);
|
||||
|
||||
if (r < 0)
|
||||
if (r < 0) {
|
||||
fprintf(stderr, "block dev %s failed: %s\n", rw ? "write" : "read",
|
||||
strerror(errno));
|
||||
else
|
||||
r = 0;
|
||||
} else {
|
||||
if (rw) {
|
||||
r = fsync(fd);
|
||||
if (r < 0)
|
||||
fprintf(stderr, "fsync failed: %s\n", strerror(errno));
|
||||
} else {
|
||||
r = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue