Merge tag 'f2fs-for-5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk...
[sfrench/cifs-2.6.git] / fs / f2fs / sysfs.c
index 70da6801c86f4e10e140e8394426415fc0209462..729f46a3c9ee0b5831ee18b6e08278a4801ee33a 100644 (file)
@@ -222,6 +222,8 @@ out:
 #ifdef CONFIG_F2FS_FAULT_INJECTION
        if (a->struct_type == FAULT_INFO_TYPE && t >= (1 << FAULT_MAX))
                return -EINVAL;
+       if (a->struct_type == FAULT_INFO_RATE && t >= UINT_MAX)
+               return -EINVAL;
 #endif
        if (a->struct_type == RESERVED_BLOCKS) {
                spin_lock(&sbi->stat_lock);
@@ -278,10 +280,16 @@ out:
                return count;
        }
 
-       *ui = t;
 
-       if (!strcmp(a->attr.name, "iostat_enable") && *ui == 0)
-               f2fs_reset_iostat(sbi);
+       if (!strcmp(a->attr.name, "iostat_enable")) {
+               sbi->iostat_enable = !!t;
+               if (!sbi->iostat_enable)
+                       f2fs_reset_iostat(sbi);
+               return count;
+       }
+
+       *ui = (unsigned int)t;
+
        return count;
 }
 
@@ -418,6 +426,8 @@ F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, idle_interval, interval_time[REQ_TIME]);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, discard_idle_interval,
                                        interval_time[DISCARD_TIME]);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_idle_interval, interval_time[GC_TIME]);
+F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info,
+               umount_discard_timeout, interval_time[UMOUNT_DISCARD_TIMEOUT]);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, iostat_enable, iostat_enable);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, readdir_ra, readdir_ra);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_pin_file_thresh, gc_pin_file_threshold);
@@ -475,6 +485,7 @@ static struct attribute *f2fs_attrs[] = {
        ATTR_LIST(idle_interval),
        ATTR_LIST(discard_idle_interval),
        ATTR_LIST(gc_idle_interval),
+       ATTR_LIST(umount_discard_timeout),
        ATTR_LIST(iostat_enable),
        ATTR_LIST(readdir_ra),
        ATTR_LIST(gc_pin_file_thresh),