diff options
Diffstat (limited to 'fs/f2fs/sysfs.c')
| -rw-r--r-- | fs/f2fs/sysfs.c | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c index 9835348b6e5d..d978c7b6ea04 100644 --- a/fs/f2fs/sysfs.c +++ b/fs/f2fs/sysfs.c @@ -113,6 +113,9 @@ static ssize_t features_show(struct f2fs_attr *a,  	if (f2fs_sb_has_quota_ino(sb))  		len += snprintf(buf + len, PAGE_SIZE - len, "%s%s",  				len ? ", " : "", "quota_ino"); +	if (f2fs_sb_has_inode_crtime(sb)) +		len += snprintf(buf + len, PAGE_SIZE - len, "%s%s", +				len ? ", " : "", "inode_crtime");  	len += snprintf(buf + len, PAGE_SIZE - len, "\n");  	return len;  } @@ -162,7 +165,8 @@ static ssize_t f2fs_sbi_store(struct f2fs_attr *a,  #endif  	if (a->struct_type == RESERVED_BLOCKS) {  		spin_lock(&sbi->stat_lock); -		if (t > (unsigned long)sbi->user_block_count) { +		if (t > (unsigned long)(sbi->user_block_count - +					sbi->root_reserved_blocks)) {  			spin_unlock(&sbi->stat_lock);  			return -EINVAL;  		} @@ -231,6 +235,7 @@ enum feat_id {  	FEAT_INODE_CHECKSUM,  	FEAT_FLEXIBLE_INLINE_XATTR,  	FEAT_QUOTA_INO, +	FEAT_INODE_CRTIME,  };  static ssize_t f2fs_feature_show(struct f2fs_attr *a, @@ -245,6 +250,7 @@ static ssize_t f2fs_feature_show(struct f2fs_attr *a,  	case FEAT_INODE_CHECKSUM:  	case FEAT_FLEXIBLE_INLINE_XATTR:  	case FEAT_QUOTA_INO: +	case FEAT_INODE_CRTIME:  		return snprintf(buf, PAGE_SIZE, "supported\n");  	}  	return 0; @@ -299,6 +305,8 @@ F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, dir_level, dir_level);  F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, cp_interval, interval_time[CP_TIME]);  F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, idle_interval, interval_time[REQ_TIME]);  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);  #ifdef CONFIG_F2FS_FAULT_INJECTION  F2FS_RW_ATTR(FAULT_INFO_RATE, f2fs_fault_info, inject_rate, inject_rate);  F2FS_RW_ATTR(FAULT_INFO_TYPE, f2fs_fault_info, inject_type, inject_type); @@ -320,6 +328,7 @@ F2FS_FEATURE_RO_ATTR(project_quota, FEAT_PROJECT_QUOTA);  F2FS_FEATURE_RO_ATTR(inode_checksum, FEAT_INODE_CHECKSUM);  F2FS_FEATURE_RO_ATTR(flexible_inline_xattr, FEAT_FLEXIBLE_INLINE_XATTR);  F2FS_FEATURE_RO_ATTR(quota_ino, FEAT_QUOTA_INO); +F2FS_FEATURE_RO_ATTR(inode_crtime, FEAT_INODE_CRTIME);  #define ATTR_LIST(name) (&f2fs_attr_##name.attr)  static struct attribute *f2fs_attrs[] = { @@ -346,6 +355,8 @@ static struct attribute *f2fs_attrs[] = {  	ATTR_LIST(cp_interval),  	ATTR_LIST(idle_interval),  	ATTR_LIST(iostat_enable), +	ATTR_LIST(readdir_ra), +	ATTR_LIST(gc_pin_file_thresh),  #ifdef CONFIG_F2FS_FAULT_INJECTION  	ATTR_LIST(inject_rate),  	ATTR_LIST(inject_type), @@ -371,6 +382,7 @@ static struct attribute *f2fs_feat_attrs[] = {  	ATTR_LIST(inode_checksum),  	ATTR_LIST(flexible_inline_xattr),  	ATTR_LIST(quota_ino), +	ATTR_LIST(inode_crtime),  	NULL,  };  |