diff options
author | Theotime Combes <tcombes@google.com> | 2020-08-18 11:18:50 +0000 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2020-08-20 09:22:48 -0700 |
commit | 5c723d171340e0913e4de13cc1a330c60ed79cf0 (patch) | |
tree | 16075ea9d96c75bf164ffc6cd27df206466d7654 | |
parent | f7029e2cf2723d13d49c0f6b55d239697ca1b59f (diff) | |
download | f2fs-tools-5c723d171340e0913e4de13cc1a330c60ed79cf0.tar.gz |
mkfs.f2fs: add -T flag
T flag sets timestamps to a given value
Signed-off-by: Theotime Combes <tcombes@google.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r-- | include/f2fs_fs.h | 2 | ||||
-rw-r--r-- | man/mkfs.f2fs.8 | 8 | ||||
-rw-r--r-- | mkfs/f2fs_format.c | 25 | ||||
-rw-r--r-- | mkfs/f2fs_format_main.c | 6 |
4 files changed, 28 insertions, 13 deletions
diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h index b6bd4a7..20abdf7 100644 --- a/include/f2fs_fs.h +++ b/include/f2fs_fs.h @@ -404,6 +404,7 @@ struct f2fs_configuration { int large_nat_bitmap; int fix_chksum; /* fix old cp.chksum position */ __le32 feature; /* defined features */ + time_t fixed_time; /* mkfs parameters */ u_int32_t next_free_nid; @@ -426,7 +427,6 @@ struct f2fs_configuration { char *mount_point; char *target_out_dir; char *fs_config_file; - time_t fixed_time; #ifdef HAVE_LIBSELINUX struct selinux_opt seopt_file[8]; int nr_opt; diff --git a/man/mkfs.f2fs.8 b/man/mkfs.f2fs.8 index 022941f..729afdf 100644 --- a/man/mkfs.f2fs.8 +++ b/man/mkfs.f2fs.8 @@ -74,6 +74,10 @@ mkfs.f2fs \- create an F2FS file system .I nodiscard/discard ] [ +.B \-T +.I timestamp +] +[ .B \-w .I wanted-sector-size ] @@ -228,6 +232,10 @@ Enable sparse mode. Specify 1 or 0 to enable or disable discard policy, respectively. The default value is 1. .TP +.BI \-T " timestamp" +Set inodes times to a given timestamp. By default, the current time will be used. +This behaviour corresponds to the value -1. +.TP .BI \-w " wanted-sector-size" Specify the sector size in bytes. Without it, the sectors will be calculated by device sector size. diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c index 7c5d1eb..cb27b42 100644 --- a/mkfs/f2fs_format.c +++ b/mkfs/f2fs_format.c @@ -35,6 +35,9 @@ struct f2fs_checkpoint *cp; #define last_zone(cur) ((cur - 1) * c.segs_per_zone) #define last_section(cur) (cur + (c.secs_per_zone - 1) * c.segs_per_sec) +/* Return time fixed by the user or current time by default */ +#define mkfs_time ((c.fixed_time == -1) ? time(NULL) : c.fixed_time) + static unsigned int quotatype_bits = 0; const char *media_ext_lists[] = { @@ -1143,11 +1146,11 @@ static int f2fs_write_root_inode(void) raw_node->i.i_size = cpu_to_le64(1 * blk_size_bytes); /* dentry */ raw_node->i.i_blocks = cpu_to_le64(2); - raw_node->i.i_atime = cpu_to_le32(time(NULL)); + raw_node->i.i_atime = cpu_to_le32(mkfs_time); raw_node->i.i_atime_nsec = 0; - raw_node->i.i_ctime = cpu_to_le32(time(NULL)); + raw_node->i.i_ctime = cpu_to_le32(mkfs_time); raw_node->i.i_ctime_nsec = 0; - raw_node->i.i_mtime = cpu_to_le32(time(NULL)); + raw_node->i.i_mtime = cpu_to_le32(mkfs_time); raw_node->i.i_mtime_nsec = 0; raw_node->i.i_generation = 0; raw_node->i.i_xattr_nid = 0; @@ -1164,7 +1167,7 @@ static int f2fs_write_root_inode(void) raw_node->i.i_projid = cpu_to_le32(F2FS_DEF_PROJID); if (c.feature & cpu_to_le32(F2FS_FEATURE_INODE_CRTIME)) { - raw_node->i.i_crtime = cpu_to_le32(time(NULL)); + raw_node->i.i_crtime = cpu_to_le32(mkfs_time); raw_node->i.i_crtime_nsec = 0; } @@ -1301,11 +1304,11 @@ static int f2fs_write_qf_inode(int qtype) raw_node->i.i_size = cpu_to_le64(1024 * 6); /* Hard coded */ raw_node->i.i_blocks = cpu_to_le64(1 + QUOTA_DATA(qtype)); - raw_node->i.i_atime = cpu_to_le32(time(NULL)); + raw_node->i.i_atime = cpu_to_le32(mkfs_time); raw_node->i.i_atime_nsec = 0; - raw_node->i.i_ctime = cpu_to_le32(time(NULL)); + raw_node->i.i_ctime = cpu_to_le32(mkfs_time); raw_node->i.i_ctime_nsec = 0; - raw_node->i.i_mtime = cpu_to_le32(time(NULL)); + raw_node->i.i_mtime = cpu_to_le32(mkfs_time); raw_node->i.i_mtime_nsec = 0; raw_node->i.i_generation = 0; raw_node->i.i_xattr_nid = 0; @@ -1496,11 +1499,11 @@ static int f2fs_write_lpf_inode(void) raw_node->i.i_size = cpu_to_le64(1 * blk_size_bytes); raw_node->i.i_blocks = cpu_to_le64(2); - raw_node->i.i_atime = cpu_to_le32(time(NULL)); + raw_node->i.i_atime = cpu_to_le32(mkfs_time); raw_node->i.i_atime_nsec = 0; - raw_node->i.i_ctime = cpu_to_le32(time(NULL)); + raw_node->i.i_ctime = cpu_to_le32(mkfs_time); raw_node->i.i_ctime_nsec = 0; - raw_node->i.i_mtime = cpu_to_le32(time(NULL)); + raw_node->i.i_mtime = cpu_to_le32(mkfs_time); raw_node->i.i_mtime_nsec = 0; raw_node->i.i_generation = 0; raw_node->i.i_xattr_nid = 0; @@ -1520,7 +1523,7 @@ static int f2fs_write_lpf_inode(void) raw_node->i.i_projid = cpu_to_le32(F2FS_DEF_PROJID); if (c.feature & cpu_to_le32(F2FS_FEATURE_INODE_CRTIME)) { - raw_node->i.i_crtime = cpu_to_le32(time(NULL)); + raw_node->i.i_crtime = cpu_to_le32(mkfs_time); raw_node->i.i_crtime_nsec = 0; } diff --git a/mkfs/f2fs_format_main.c b/mkfs/f2fs_format_main.c index 90c8759..9fe049c 100644 --- a/mkfs/f2fs_format_main.c +++ b/mkfs/f2fs_format_main.c @@ -62,6 +62,7 @@ static void mkfs_usage() MSG(0, " -s # of segments per section [default:1]\n"); MSG(0, " -S sparse mode\n"); MSG(0, " -t 0: nodiscard, 1: discard [default:1]\n"); + MSG(0, " -T timestamps\n"); MSG(0, " -w wanted sector size\n"); MSG(0, " -z # of sections per zone [default:1]\n"); MSG(0, " -V print the version number and exit\n"); @@ -123,7 +124,7 @@ static void add_default_options(void) static void f2fs_parse_options(int argc, char *argv[]) { - static const char *option_string = "qa:c:C:d:e:E:g:il:mo:O:R:s:S:z:t:U:Vfw:"; + static const char *option_string = "qa:c:C:d:e:E:g:il:mo:O:R:s:S:z:t:T:U:Vfw:"; int32_t option=0; int val; char *token; @@ -201,6 +202,9 @@ static void f2fs_parse_options(int argc, char *argv[]) case 't': c.trim = atoi(optarg); break; + case 'T': + c.fixed_time = strtoul(optarg, NULL, 0); + break; case 'U': c.vol_uuid = strdup(optarg); break; |