From 26e4226a41a9e16fed8b413f8379e8e57b69a7e5 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Sat, 25 Apr 2020 13:28:18 +0200 Subject: [PATCH] main: fix set mtime for a symlink Closes: https://github.com/containers/fuse-overlayfs/issues/204 Signed-off-by: Giuseppe Scrivano --- main.c | 2 +- tests/fedora-installs.sh | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index d83ac3f..dfb4d15 100644 --- a/main.c +++ b/main.c @@ -3646,7 +3646,7 @@ ovl_setattr (fuse_req_t req, fuse_ino_t ino, struct stat *attr, int to_set, stru if (fd >= 0) ret = futimens (fd, times); else - ret = utimensat (AT_FDCWD, path, times, AT_SYMLINK_NOFOLLOW); + ret = utimensat (AT_FDCWD, path, times, 0); if (ret < 0) { fuse_reply_err (req, errno); diff --git a/tests/fedora-installs.sh b/tests/fedora-installs.sh index 95e8417..f3b63e9 100755 --- a/tests/fedora-installs.sh +++ b/tests/fedora-installs.sh @@ -169,3 +169,22 @@ test $(stat -c %h merged/a) = 5 rm -rf merged/a/3 test $(stat -c %h merged/a) = 4 + +# symlink mtime + +touch merged/afile +ln -s afile merged/alink +touch -h -d "2020-01-02 12:13:14" merged/alink +stat --format "%y" merged/alink | grep "12:13:14" +stat --format "%x" merged/alink | grep "12:13:14" + +# file mtime +touch -h -d "2020-01-02 11:12:13" merged/afile +stat --format "%y" merged/afile | grep "11:12:13" +stat --format "%x" merged/afile | grep "11:12:13" + +# dir mtime +mkdir merged/adir +touch -h -d "2020-01-02 10:11:12" merged/adir +stat --format "%y" merged/adir | grep "10:11:12" +stat --format "%x" merged/adir | grep "10:11:12"