diff options
author | Tao Bao <tbao@google.com> | 2015-07-28 02:12:31 +0200 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-07-28 02:12:31 +0200 |
commit | 62e1923194de067c0ac589abcfc4f04fdddf2b1a (patch) | |
tree | d1e9b32f133e95afe5577964a2639fde15235f60 /updater/blockimg.cpp | |
parent | Merge "applypatch: Fix the checking in WriteToPartition()." (diff) | |
parent | updater: Hoist fsync() to outer loop. (diff) | |
download | android_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 '')
-rw-r--r-- | updater/blockimg.cpp | 11 |
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); } |