From: David Anderson via Linux-erofs <linux-erofs@lists.ozlabs.org>
To: linux-erofs@lists.ozlabs.org
Subject: [PATCH 1/2] erofs-utils: mkfs: rename ctime to mtime
Date: Fri, 11 Mar 2022 04:17:23 +0000 [thread overview]
Message-ID: <20220311041724.3107622-1-dvander@google.com> (raw)
Currently mkfs.erofs picks up whatever the system time happened to be
when the input file structure was created. Since there's no (easy) way for
userspace to control ctime, there's no way to control the per-file ctime
that mkfs.erofs uses.
In preparation for switching to mtime, rename the "ctime" members of the
inode structure.
Signed-off-by: David Anderson <dvander@google.com>
---
dump/main.c | 4 ++--
fsck/main.c | 12 ++++++------
fuse/main.c | 2 +-
include/erofs/internal.h | 4 ++--
include/erofs_fs.h | 4 ++--
lib/inode.c | 14 +++++++-------
lib/namei.c | 8 ++++----
7 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/dump/main.c b/dump/main.c
index bb1bd7f..6565d35 100644
--- a/dump/main.c
+++ b/dump/main.c
@@ -488,7 +488,7 @@ static void erofsdump_show_fileinfo(bool show_extent)
}
strftime(timebuf, sizeof(timebuf),
- "%Y-%m-%d %H:%M:%S", localtime((time_t *)&inode.i_ctime));
+ "%Y-%m-%d %H:%M:%S", localtime((time_t *)&inode.i_mtime));
access_mode = inode.i_mode & 0777;
for (i = 8; i >= 0; i--)
if (((access_mode >> i) & 1) == 0)
@@ -507,7 +507,7 @@ static void erofsdump_show_fileinfo(bool show_extent)
fprintf(stdout, "Xattr size: %u\n", inode.xattr_isize);
fprintf(stdout, "Uid: %u Gid: %u ", inode.i_uid, inode.i_gid);
fprintf(stdout, "Access: %04o/%s\n", access_mode, access_mode_str);
- fprintf(stdout, "Timestamp: %s.%09d\n", timebuf, inode.i_ctime_nsec);
+ fprintf(stdout, "Timestamp: %s.%09d\n", timebuf, inode.i_mtime_nsec);
if (!dumpcfg.show_extent)
return;
diff --git a/fsck/main.c b/fsck/main.c
index e669b44..0af15b4 100644
--- a/fsck/main.c
+++ b/fsck/main.c
@@ -229,14 +229,14 @@ static void erofsfsck_set_attributes(struct erofs_inode *inode, char *path)
#ifdef HAVE_UTIMENSAT
if (utimensat(AT_FDCWD, path, (struct timespec []) {
- [0] = { .tv_sec = inode->i_ctime,
- .tv_nsec = inode->i_ctime_nsec },
- [1] = { .tv_sec = inode->i_ctime,
- .tv_nsec = inode->i_ctime_nsec },
+ [0] = { .tv_sec = inode->i_mtime,
+ .tv_nsec = inode->i_mtime_nsec },
+ [1] = { .tv_sec = inode->i_mtime,
+ .tv_nsec = inode->i_mtime_nsec },
}, AT_SYMLINK_NOFOLLOW) < 0)
#else
- if (utime(path, &((struct utimbuf){.actime = inode->i_ctime,
- .modtime = inode->i_ctime})) < 0)
+ if (utime(path, &((struct utimbuf){.actime = inode->i_mtime,
+ .modtime = inode->i_mtime})) < 0)
#endif
erofs_warn("failed to set times: %s", path);
diff --git a/fuse/main.c b/fuse/main.c
index 2549d8a..ae377ae 100644
--- a/fuse/main.c
+++ b/fuse/main.c
@@ -98,7 +98,7 @@ static int erofsfuse_getattr(const char *path, struct stat *stbuf)
stbuf->st_gid = vi.i_gid;
if (S_ISBLK(vi.i_mode) || S_ISCHR(vi.i_mode))
stbuf->st_rdev = vi.u.i_rdev;
- stbuf->st_ctime = vi.i_ctime;
+ stbuf->st_ctime = vi.i_mtime;
stbuf->st_mtime = stbuf->st_ctime;
stbuf->st_atime = stbuf->st_ctime;
return 0;
diff --git a/include/erofs/internal.h b/include/erofs/internal.h
index 947304f..56627e9 100644
--- a/include/erofs/internal.h
+++ b/include/erofs/internal.h
@@ -154,8 +154,8 @@ struct erofs_inode {
u64 i_ino[2];
u32 i_uid;
u32 i_gid;
- u64 i_ctime;
- u32 i_ctime_nsec;
+ u64 i_mtime;
+ u32 i_mtime_nsec;
u32 i_nlink;
union {
diff --git a/include/erofs_fs.h b/include/erofs_fs.h
index 9a91877..e01f5c7 100644
--- a/include/erofs_fs.h
+++ b/include/erofs_fs.h
@@ -183,8 +183,8 @@ struct erofs_inode_extended {
__le32 i_uid;
__le32 i_gid;
- __le64 i_ctime;
- __le32 i_ctime_nsec;
+ __le64 i_mtime;
+ __le32 i_mtime_nsec;
__le32 i_nlink;
__u8 i_reserved2[16];
};
diff --git a/lib/inode.c b/lib/inode.c
index 461c797..24f2567 100644
--- a/lib/inode.c
+++ b/lib/inode.c
@@ -477,8 +477,8 @@ static bool erofs_bh_flush_write_inode(struct erofs_buffer_head *bh)
u.die.i_uid = cpu_to_le32(inode->i_uid);
u.die.i_gid = cpu_to_le32(inode->i_gid);
- u.die.i_ctime = cpu_to_le64(inode->i_ctime);
- u.die.i_ctime_nsec = cpu_to_le32(inode->i_ctime_nsec);
+ u.die.i_mtime = cpu_to_le64(inode->i_mtime);
+ u.die.i_mtime_nsec = cpu_to_le32(inode->i_mtime_nsec);
switch (inode->i_mode & S_IFMT) {
case S_IFCHR:
@@ -806,16 +806,16 @@ static int erofs_fill_inode(struct erofs_inode *inode,
inode->i_mode = st->st_mode;
inode->i_uid = cfg.c_uid == -1 ? st->st_uid : cfg.c_uid;
inode->i_gid = cfg.c_gid == -1 ? st->st_gid : cfg.c_gid;
- inode->i_ctime = st->st_ctime;
- inode->i_ctime_nsec = ST_CTIM_NSEC(st);
+ inode->i_mtime = st->st_ctime;
+ inode->i_mtime_nsec = ST_CTIM_NSEC(st);
switch (cfg.c_timeinherit) {
case TIMESTAMP_CLAMPING:
- if (st->st_ctime < sbi.build_time)
+ if (inode->i_mtime < sbi.build_time)
break;
case TIMESTAMP_FIXED:
- inode->i_ctime = sbi.build_time;
- inode->i_ctime_nsec = sbi.build_time_nsec;
+ inode->i_mtime = sbi.build_time;
+ inode->i_mtime_nsec = sbi.build_time_nsec;
default:
break;
}
diff --git a/lib/namei.c b/lib/namei.c
index 7377e74..2c8891a 100644
--- a/lib/namei.c
+++ b/lib/namei.c
@@ -79,8 +79,8 @@ int erofs_read_inode_from_disk(struct erofs_inode *vi)
vi->i_gid = le32_to_cpu(die->i_gid);
vi->i_nlink = le32_to_cpu(die->i_nlink);
- vi->i_ctime = le64_to_cpu(die->i_ctime);
- vi->i_ctime_nsec = le64_to_cpu(die->i_ctime_nsec);
+ vi->i_mtime = le64_to_cpu(die->i_mtime);
+ vi->i_mtime_nsec = le64_to_cpu(die->i_mtime_nsec);
vi->i_size = le64_to_cpu(die->i_size);
if (vi->datalayout == EROFS_INODE_CHUNK_BASED)
/* fill chunked inode summary info */
@@ -114,8 +114,8 @@ int erofs_read_inode_from_disk(struct erofs_inode *vi)
vi->i_gid = le16_to_cpu(dic->i_gid);
vi->i_nlink = le16_to_cpu(dic->i_nlink);
- vi->i_ctime = sbi.build_time;
- vi->i_ctime_nsec = sbi.build_time_nsec;
+ vi->i_mtime = sbi.build_time;
+ vi->i_mtime_nsec = sbi.build_time_nsec;
vi->i_size = le32_to_cpu(dic->i_size);
if (vi->datalayout == EROFS_INODE_CHUNK_BASED)
--
2.35.1.723.g4982287a31-goog
next reply other threads:[~2022-03-11 4:17 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-11 4:17 David Anderson via Linux-erofs [this message]
2022-03-11 4:17 ` [PATCH 2/2] erofs-utils: mkfs: use mtime instead of ctime David Anderson via Linux-erofs
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220311041724.3107622-1-dvander@google.com \
--to=linux-erofs@lists.ozlabs.org \
--cc=dvander@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox