From ed4a653c09eac5d2189600cf1f926751013026b9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 26 Feb 2021 22:44:39 +0100 Subject: [PATCH] fs-util: handle gracefully if fsync_full() is called on block devices and such --- src/basic/fs-util.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c index 9423b9bf7ac..48e5a96134b 100644 --- a/src/basic/fs-util.c +++ b/src/basic/fs-util.c @@ -1465,9 +1465,14 @@ int fsync_full(int fd) { /* Sync both the file and the directory */ r = fsync(fd) < 0 ? -errno : 0; - q = fsync_directory_of_file(fd); - return r < 0 ? r : q; + q = fsync_directory_of_file(fd); + if (r < 0) /* Return earlier error */ + return r; + if (q == -ENOTTY) /* Ignore if the 'fd' refers to a block device or so which doesn't really have a + * parent dir */ + return 0; + return q; } int fsync_path_at(int at_fd, const char *path) { -- 2.47.3