f2fs: show mounted time
authorJaegeuk Kim <jaegeuk@kernel.org>
Wed, 26 Feb 2020 03:08:16 +0000 (19:08 -0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 19 Mar 2020 18:41:25 +0000 (11:41 -0700)
Let's show mounted time.

Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Documentation/ABI/testing/sysfs-fs-f2fs
fs/f2fs/debug.c
fs/f2fs/segment.c
fs/f2fs/segment.h
fs/f2fs/sysfs.c

index 1a6cd53..bd8a0d1 100644 (file)
@@ -318,3 +318,8 @@ Date:               September 2019
 Contact:       "Hridya Valsaraju" <hridya@google.com>
 Description:   Average number of valid blocks.
                Available when CONFIG_F2FS_STAT_FS=y.
+
+What:          /sys/fs/f2fs/<disk>/mounted_time_sec
+Date:          February 2020
+Contact:       "Jaegeuk Kim" <jaegeuk@kernel.org>
+Description:   Show the mounted time in secs of this partition.
index 6b89eae..0dbcb0f 100644 (file)
@@ -301,6 +301,9 @@ static int stat_show(struct seq_file *s, void *v)
                           si->ssa_area_segs, si->main_area_segs);
                seq_printf(s, "(OverProv:%d Resv:%d)]\n\n",
                           si->overp_segs, si->rsvd_segs);
+               seq_printf(s, "Current Time Sec: %llu / Mounted Time Sec: %llu\n\n",
+                                       ktime_get_boottime_seconds(),
+                                       SIT_I(si->sbi)->mounted_time);
                if (test_opt(si->sbi, DISCARD))
                        seq_printf(s, "Utilization: %u%% (%u valid blocks, %u discard blocks)\n",
                                si->utilization, si->valid_count, si->discard_blks);
index cf0eb00..c00cf5c 100644 (file)
@@ -4071,7 +4071,7 @@ static int build_sit_info(struct f2fs_sb_info *sbi)
        sit_i->dirty_sentries = 0;
        sit_i->sents_per_block = SIT_ENTRY_PER_BLOCK;
        sit_i->elapsed_time = le64_to_cpu(sbi->ckpt->elapsed_time);
-       sit_i->mounted_time = ktime_get_real_seconds();
+       sit_i->mounted_time = ktime_get_boottime_seconds();
        init_rwsem(&sit_i->sentry_lock);
        return 0;
 }
index 459dc39..7a83bd5 100644 (file)
@@ -756,7 +756,7 @@ static inline unsigned long long get_mtime(struct f2fs_sb_info *sbi,
                                                bool base_time)
 {
        struct sit_info *sit_i = SIT_I(sbi);
-       time64_t diff, now = ktime_get_real_seconds();
+       time64_t diff, now = ktime_get_boottime_seconds();
 
        if (now >= sit_i->mounted_time)
                return sit_i->elapsed_time + now - sit_i->mounted_time;
index 5cc58a1..5f4fec8 100644 (file)
@@ -185,6 +185,12 @@ static ssize_t encoding_show(struct f2fs_attr *a,
        return sprintf(buf, "(none)");
 }
 
+static ssize_t mounted_time_sec_show(struct f2fs_attr *a,
+               struct f2fs_sb_info *sbi, char *buf)
+{
+       return sprintf(buf, "%llu", SIT_I(sbi)->mounted_time);
+}
+
 #ifdef CONFIG_F2FS_STAT_FS
 static ssize_t moved_blocks_foreground_show(struct f2fs_attr *a,
                                struct f2fs_sb_info *sbi, char *buf)
@@ -544,6 +550,7 @@ F2FS_GENERAL_RO_ATTR(features);
 F2FS_GENERAL_RO_ATTR(current_reserved_blocks);
 F2FS_GENERAL_RO_ATTR(unusable);
 F2FS_GENERAL_RO_ATTR(encoding);
+F2FS_GENERAL_RO_ATTR(mounted_time_sec);
 #ifdef CONFIG_F2FS_STAT_FS
 F2FS_STAT_ATTR(STAT_INFO, f2fs_stat_info, cp_foreground_calls, cp_count);
 F2FS_STAT_ATTR(STAT_INFO, f2fs_stat_info, cp_background_calls, bg_cp_count);
@@ -621,6 +628,7 @@ static struct attribute *f2fs_attrs[] = {
        ATTR_LIST(reserved_blocks),
        ATTR_LIST(current_reserved_blocks),
        ATTR_LIST(encoding),
+       ATTR_LIST(mounted_time_sec),
 #ifdef CONFIG_F2FS_STAT_FS
        ATTR_LIST(cp_foreground_calls),
        ATTR_LIST(cp_background_calls),