erofs: rename ctime to mtime
authorDavid Anderson <dvander@google.com>
Thu, 17 Mar 2022 11:49:59 +0000 (19:49 +0800)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Thu, 17 Mar 2022 15:41:14 +0000 (23:41 +0800)
EROFS images should inherit modification time rather than change time,
since users and host tooling have no easy way to control change time.

To reflect the new timestamp meaning, i_ctime and i_ctime_nsec are
renamed to i_mtime and i_mtime_nsec.

Link: https://lore.kernel.org/r/20220311041829.3109511-1-dvander@google.com
Signed-off-by: David Anderson <dvander@google.com>
[ Gao Xiang: update document as well. ]
Reviewed-by: Chao Yu <chao@kernel.org>
Link: https://lore.kernel.org/r/20220317114959.106787-1-hsiangkao@linux.alibaba.com
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Documentation/filesystems/erofs.rst
fs/erofs/erofs_fs.h
fs/erofs/inode.c

index 7119aa2..bef6d30 100644 (file)
@@ -40,7 +40,7 @@ Here is the main features of EROFS:
    Inode metadata size    32 bytes      64 bytes
    Max file size          4 GB          16 EB (also limited by max. vol size)
    Max uids/gids          65536         4294967296
-   File change time       no            yes (64 + 32-bit timestamp)
+   Per-inode timestamp    no            yes (64 + 32-bit timestamp)
    Max hardlinks          65536         4294967296
    Metadata reserved      4 bytes       14 bytes
    =====================  ============  =====================================
index 3ea62c6..1238ca1 100644 (file)
@@ -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];
 };
index ff62f84..e8b37ba 100644 (file)
@@ -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);