From a0fe2a2d2028ea8b5e6873b1f55e91a36081656c Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Tue, 26 Apr 2016 15:47:55 +0200
Subject: journal: when creating a new journal file, fsync() the directory it
 is created in too

Fixes: #2831
---
 src/basic/fd-util.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

(limited to 'src/basic/fd-util.c')

diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c
index 9130d023d7..8b466cff15 100644
--- a/src/basic/fd-util.c
+++ b/src/basic/fd-util.c
@@ -361,8 +361,14 @@ bool fdname_is_valid(const char *s) {
 
 int fd_get_path(int fd, char **ret) {
         char procfs_path[strlen("/proc/self/fd/") + DECIMAL_STR_MAX(int)];
+        int r;
 
         xsprintf(procfs_path, "/proc/self/fd/%i", fd);
 
-        return readlink_malloc(procfs_path, ret);
+        r = readlink_malloc(procfs_path, ret);
+
+        if (r == -ENOENT) /* If the file doesn't exist the fd is invalid */
+                return -EBADF;
+
+        return r;
 }
-- 
cgit v1.2.3-54-g00ecf