summaryrefslogtreecommitdiffstats
path: root/updater/blockimg.cpp
diff options
context:
space:
mode:
authorTao Bao <tbao@google.com>2015-07-28 02:12:31 +0200
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-07-28 02:12:31 +0200
commit62e1923194de067c0ac589abcfc4f04fdddf2b1a (patch)
treed1e9b32f133e95afe5577964a2639fde15235f60 /updater/blockimg.cpp
parentMerge "applypatch: Fix the checking in WriteToPartition()." (diff)
parentupdater: Hoist fsync() to outer loop. (diff)
downloadandroid_bootable_recovery-62e1923194de067c0ac589abcfc4f04fdddf2b1a.tar
android_bootable_recovery-62e1923194de067c0ac589abcfc4f04fdddf2b1a.tar.gz
android_bootable_recovery-62e1923194de067c0ac589abcfc4f04fdddf2b1a.tar.bz2
android_bootable_recovery-62e1923194de067c0ac589abcfc4f04fdddf2b1a.tar.lz
android_bootable_recovery-62e1923194de067c0ac589abcfc4f04fdddf2b1a.tar.xz
android_bootable_recovery-62e1923194de067c0ac589abcfc4f04fdddf2b1a.tar.zst
android_bootable_recovery-62e1923194de067c0ac589abcfc4f04fdddf2b1a.zip
Diffstat (limited to 'updater/blockimg.cpp')
-rw-r--r--updater/blockimg.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/updater/blockimg.cpp b/updater/blockimg.cpp
index 258d97552..77117db05 100644
--- a/updater/blockimg.cpp
+++ b/updater/blockimg.cpp
@@ -192,11 +192,6 @@ static int write_all(int fd, const uint8_t* data, size_t size) {
written += w;
}
- if (fsync(fd) == -1) {
- fprintf(stderr, "fsync failed: %s\n", strerror(errno));
- return -1;
- }
-
return 0;
}
@@ -728,7 +723,7 @@ static int WriteStash(const char* base, const char* id, int blocks, uint8_t* buf
fprintf(stderr, " writing %d blocks to %s\n", blocks, cn);
- fd = TEMP_FAILURE_RETRY(open(fn, O_WRONLY | O_CREAT | O_TRUNC | O_SYNC, STASH_FILE_MODE));
+ fd = TEMP_FAILURE_RETRY(open(fn, O_WRONLY | O_CREAT | O_TRUNC, STASH_FILE_MODE));
if (fd == -1) {
fprintf(stderr, "failed to create \"%s\": %s\n", fn, strerror(errno));
@@ -1762,6 +1757,10 @@ static Value* PerformBlockImageUpdate(const char* name, State* state, int argc,
}
if (params.canwrite) {
+ if (fsync(params.fd) == -1) {
+ fprintf(stderr, "fsync failed: %s\n", strerror(errno));
+ goto pbiudone;
+ }
fprintf(cmd_pipe, "set_progress %.4f\n", (double) params.written / total_blocks);
fflush(cmd_pipe);
}