From 71f514169b14e2bd67e9465f132bae502b51af98 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 23 Jan 2019 16:08:55 +0100 Subject: [PATCH] fs-util: add new helper syncfs_path() --- src/basic/fs-util.c | 15 +++++++++++++++ src/basic/fs-util.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c index 3ff86157973..0d631093b29 100644 --- a/src/basic/fs-util.c +++ b/src/basic/fs-util.c @@ -1330,6 +1330,21 @@ int fsync_path_at(int at_fd, const char *path) { return 0; } +int syncfs_path(int atfd, const char *path) { + _cleanup_close_ int fd = -1; + + assert(path); + + fd = openat(atfd, path, O_CLOEXEC|O_RDONLY|O_NONBLOCK); + if (fd < 0) + return -errno; + + if (syncfs(fd) < 0) + return -errno; + + return 0; +} + int open_parent(const char *path, int flags, mode_t mode) { _cleanup_free_ char *parent = NULL; int fd; diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h index 7ad030be5d0..9c9044669d9 100644 --- a/src/basic/fs-util.h +++ b/src/basic/fs-util.h @@ -108,4 +108,6 @@ int unlinkat_deallocate(int fd, const char *name, int flags); int fsync_directory_of_file(int fd); int fsync_path_at(int at_fd, const char *path); +int syncfs_path(int atfd, const char *path); + int open_parent(const char *path, int flags, mode_t mode); -- 2.47.3