diff options
author | Michael Heimpold <mhei@heimpold.de> | 2013-05-20 21:34:42 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2017-07-22 15:36:16 -0400 |
commit | 7e99e14d4ba2533a07adc3d97e06cadc41d12908 (patch) | |
tree | 6f928534561fd82ad247120f1179431f07900e6a /tools | |
parent | aae6f016a7928edc79dff78d1235103fff282a34 (diff) | |
download | u-boot-7e99e14d4ba2533a07adc3d97e06cadc41d12908.tar.gz |
tools/fw_env: use fsync to ensure that data is physically stored
Closing a file descriptor does not guarantee that the data has been
successfully saved to disk, as the kernel might defer the write.
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/env/fw_env.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c index 2861656183..c9c79e066d 100644 --- a/tools/env/fw_env.c +++ b/tools/env/fw_env.c @@ -1088,7 +1088,19 @@ static int flash_io (int mode) rc = flash_write (fd_current, fd_target, dev_target); + if (fsync (fd_current)) { + fprintf (stderr, + "fsync failed on %s: %s\n", + DEVNAME (dev_current), strerror (errno)); + } + if (HaveRedundEnv) { + if (fsync (fd_target)) { + fprintf (stderr, + "fsync failed on %s: %s\n", + DEVNAME (dev_current), strerror (errno)); + } + if (close (fd_target)) { fprintf (stderr, "I/O error on %s: %s\n", |