util: Add fsync_path to selectively flush file buffer to disk 68/192668/5
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Wed, 7 Nov 2018 11:58:19 +0000 (12:58 +0100)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Fri, 16 Nov 2018 12:22:59 +0000 (13:22 +0100)
Change-Id: I3cd9169dafff33cdfbaf1c21955c37d38a524fae

src/shared/util.c
src/shared/util.h

index bdb8259..85879d6 100644 (file)
@@ -502,6 +502,22 @@ int run_command_timeout(char *path, char *args[], char *env[], int timeout)
        return res;
 }
 
+int fsync_path(char *const path)
+{
+       int fd, ret;
+
+       ret = fd = open(path, O_RDONLY);
+       if (fd >= 0) {
+               ret = fsync(fd);
+               close(fd);
+       }
+
+       if (ret < 0)
+               _E("Unable to fsync %s: %m", path);
+
+       return ret;
+}
+
 static int remove_dir_internal(int fd)
 {
        DIR *dir;
index 53e0c7d..819a19c 100644 (file)
@@ -51,6 +51,8 @@ int run_command_write_fd_timeout(char *path, char *args[], char *env[], int dfd,
 
 int run_command_timeout(char *path, char *args[], char *env[], int timeout);
 
+int fsync_path(char *const path);
+
 int remove_dir(const char *path, int del_dir);
 
 int get_exec_pid(const char *execpath);