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>
This commit is contained in:
parent
aae6f016a7
commit
7e99e14d4b
12
tools/env/fw_env.c
vendored
12
tools/env/fw_env.c
vendored
@ -1088,7 +1088,19 @@ static int flash_io (int mode)
|
|||||||
|
|
||||||
rc = flash_write (fd_current, fd_target, dev_target);
|
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 (HaveRedundEnv) {
|
||||||
|
if (fsync (fd_target)) {
|
||||||
|
fprintf (stderr,
|
||||||
|
"fsync failed on %s: %s\n",
|
||||||
|
DEVNAME (dev_current), strerror (errno));
|
||||||
|
}
|
||||||
|
|
||||||
if (close (fd_target)) {
|
if (close (fd_target)) {
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
"I/O error on %s: %s\n",
|
"I/O error on %s: %s\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user