summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-01-08 16:57:02 +0100
committerLennart Poettering <lennart@poettering.net>2021-01-09 15:56:03 +0100
commit02dcf2157194f076e2aa6d2695ef4cd90cdb0002 (patch)
treeb07c03fa22411ec2b9df5f2d073954c937d7e82b
parentc21087014e061f709f15af9eb835970754253e89 (diff)
downloadsystemd-02dcf2157194f076e2aa6d2695ef4cd90cdb0002.tar.gz
machine-image: pick up crtime of directory images, too
-rw-r--r--src/shared/machine-image.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/shared/machine-image.c b/src/shared/machine-image.c
index 366abd8971..df288bc0e1 100644
--- a/src/shared/machine-image.c
+++ b/src/shared/machine-image.c
@@ -236,6 +236,7 @@ static int image_make(
if (S_ISDIR(st->st_mode)) {
_cleanup_close_ int fd = -1;
unsigned file_attr = 0;
+ usec_t crtime = 0;
if (!ret)
return 0;
@@ -295,8 +296,10 @@ static int image_make(
}
}
- /* If the IMMUTABLE bit is set, we consider the
- * directory read-only. Since the ioctl is not
+ /* Get directory creation time (not available everywhere, but that's OK */
+ (void) fd_getcrtime(dfd, &crtime);
+
+ /* If the IMMUTABLE bit is set, we consider the directory read-only. Since the ioctl is not
* supported everywhere we ignore failures. */
(void) read_attr_fd(fd, &file_attr);
@@ -306,8 +309,8 @@ static int image_make(
path,
filename,
read_only || (file_attr & FS_IMMUTABLE_FL),
- 0,
- 0,
+ crtime,
+ 0, /* we don't use mtime of stat() here, since it's not the time of last change of the tree, but only of the top-level dir */
ret);
if (r < 0)
return r;