EROFS images should inherit modification time rather than creation time,
since users and host tooling have no easy way to control creation time.
To reflect the new timestamp meaning, i_ctime and i_ctime_nsec are
renamed to i_mtime and i_mtime_nsec.

Signed-off-by: David Anderson <[email protected]>
---
 fs/erofs/erofs_fs.h | 5 +++--
 fs/erofs/inode.c    | 4 ++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/fs/erofs/erofs_fs.h b/fs/erofs/erofs_fs.h
index 3ea62c6fb00a..1238ca104f09 100644
--- a/fs/erofs/erofs_fs.h
+++ b/fs/erofs/erofs_fs.h
@@ -12,6 +12,7 @@
 #define EROFS_SUPER_OFFSET      1024
 
 #define EROFS_FEATURE_COMPAT_SB_CHKSUM          0x00000001
+#define EROFS_FEATURE_COMPAT_MTIME              0x00000002
 
 /*
  * Any bits that aren't in EROFS_ALL_FEATURE_INCOMPAT should
@@ -186,8 +187,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/fs/erofs/inode.c b/fs/erofs/inode.c
index ff62f84f47d3..e8b37ba5e9ad 100644
--- a/fs/erofs/inode.c
+++ b/fs/erofs/inode.c
@@ -113,8 +113,8 @@ static void *erofs_read_inode(struct erofs_buf *buf,
                set_nlink(inode, le32_to_cpu(die->i_nlink));
 
                /* extended inode has its own timestamp */
-               inode->i_ctime.tv_sec = le64_to_cpu(die->i_ctime);
-               inode->i_ctime.tv_nsec = le32_to_cpu(die->i_ctime_nsec);
+               inode->i_ctime.tv_sec = le64_to_cpu(die->i_mtime);
+               inode->i_ctime.tv_nsec = le32_to_cpu(die->i_mtime_nsec);
 
                inode->i_size = le64_to_cpu(die->i_size);
 
-- 
2.35.1.723.g4982287a31-goog

Reply via email to