libxfs: check return value of device flush when closing device
Although the libxfs_umount function flushes all devices when unmounting
the incore filesystem, the libxfs io code will flush the device again
when the application close them. Check and report any errors that might
happen, though this is unlikely.
Coverity-id: 1460464
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
diff --git a/libxfs/init.c b/libxfs/init.c
index 3e6436c..cb8967b 100644
--- a/libxfs/init.c
+++ b/libxfs/init.c
@@ -166,13 +166,18 @@
for (d = 0; d < MAX_DEVS; d++)
if (dev_map[d].dev == dev) {
- int fd;
+ int fd, ret;
fd = dev_map[d].fd;
dev_map[d].dev = dev_map[d].fd = 0;
- fsync(fd);
- platform_flush_device(fd, dev);
+ ret = platform_flush_device(fd, dev);
+ if (ret) {
+ ret = -errno;
+ fprintf(stderr,
+ _("%s: flush of device %lld failed, err=%d"),
+ progname, (long long)dev, ret);
+ }
close(fd);
return;