diff options
Diffstat (limited to 'lib/inode.c')
-rw-r--r-- | lib/inode.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/inode.c b/lib/inode.c index 461c797..77ea8bf 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: @@ -730,6 +730,10 @@ static bool erofs_should_use_inode_extended(struct erofs_inode *inode) return true; if (inode->i_nlink > USHRT_MAX) return true; + if ((inode->i_mtime != sbi.build_time || + inode->i_mtime_nsec != sbi.build_time_nsec) && + !cfg.c_ignore_mtime) + return true; return false; } @@ -806,16 +810,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_mtime; + inode->i_mtime_nsec = ST_MTIM_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; } |