sysfs.c (ac92985864e187a1735502f6a02f54eaa655b2aa) | sysfs.c (643fa9612bf1a29153eee46fd398117632f93cbe) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * f2fs sysfs interface 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 * Copyright (c) 2017 Chao Yu <chao@kernel.org> 8 */ --- 208 unchanged lines hidden (view full) --- 217 ui = (unsigned int *)(ptr + a->offset); 218 219 ret = kstrtoul(skip_spaces(buf), 0, &t); 220 if (ret < 0) 221 return ret; 222#ifdef CONFIG_F2FS_FAULT_INJECTION 223 if (a->struct_type == FAULT_INFO_TYPE && t >= (1 << FAULT_MAX)) 224 return -EINVAL; | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * f2fs sysfs interface 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 * Copyright (c) 2017 Chao Yu <chao@kernel.org> 8 */ --- 208 unchanged lines hidden (view full) --- 217 ui = (unsigned int *)(ptr + a->offset); 218 219 ret = kstrtoul(skip_spaces(buf), 0, &t); 220 if (ret < 0) 221 return ret; 222#ifdef CONFIG_F2FS_FAULT_INJECTION 223 if (a->struct_type == FAULT_INFO_TYPE && t >= (1 << FAULT_MAX)) 224 return -EINVAL; |
225 if (a->struct_type == FAULT_INFO_RATE && t >= UINT_MAX) 226 return -EINVAL; | |
227#endif 228 if (a->struct_type == RESERVED_BLOCKS) { 229 spin_lock(&sbi->stat_lock); 230 if (t > (unsigned long)(sbi->user_block_count - 231 F2FS_OPTION(sbi).root_reserved_blocks)) { 232 spin_unlock(&sbi->stat_lock); 233 return -EINVAL; 234 } --- 40 unchanged lines hidden (view full) --- 275 sbi->gc_mode = GC_IDLE_CB; 276 else if (t == GC_IDLE_GREEDY) 277 sbi->gc_mode = GC_IDLE_GREEDY; 278 else 279 sbi->gc_mode = GC_NORMAL; 280 return count; 281 } 282 | 225#endif 226 if (a->struct_type == RESERVED_BLOCKS) { 227 spin_lock(&sbi->stat_lock); 228 if (t > (unsigned long)(sbi->user_block_count - 229 F2FS_OPTION(sbi).root_reserved_blocks)) { 230 spin_unlock(&sbi->stat_lock); 231 return -EINVAL; 232 } --- 40 unchanged lines hidden (view full) --- 273 sbi->gc_mode = GC_IDLE_CB; 274 else if (t == GC_IDLE_GREEDY) 275 sbi->gc_mode = GC_IDLE_GREEDY; 276 else 277 sbi->gc_mode = GC_NORMAL; 278 return count; 279 } 280 |
281 *ui = t; |
|
283 | 282 |
284 if (!strcmp(a->attr.name, "iostat_enable")) { 285 sbi->iostat_enable = !!t; 286 if (!sbi->iostat_enable) 287 f2fs_reset_iostat(sbi); 288 return count; 289 } 290 291 *ui = (unsigned int)t; 292 | 283 if (!strcmp(a->attr.name, "iostat_enable") && *ui == 0) 284 f2fs_reset_iostat(sbi); |
293 return count; 294} 295 296static ssize_t f2fs_sbi_store(struct f2fs_attr *a, 297 struct f2fs_sb_info *sbi, 298 const char *buf, size_t count) 299{ 300 ssize_t ret; --- 133 unchanged lines hidden (view full) --- 434F2FS_RW_ATTR(FAULT_INFO_RATE, f2fs_fault_info, inject_rate, inject_rate); 435F2FS_RW_ATTR(FAULT_INFO_TYPE, f2fs_fault_info, inject_type, inject_type); 436#endif 437F2FS_GENERAL_RO_ATTR(dirty_segments); 438F2FS_GENERAL_RO_ATTR(lifetime_write_kbytes); 439F2FS_GENERAL_RO_ATTR(features); 440F2FS_GENERAL_RO_ATTR(current_reserved_blocks); 441 | 285 return count; 286} 287 288static ssize_t f2fs_sbi_store(struct f2fs_attr *a, 289 struct f2fs_sb_info *sbi, 290 const char *buf, size_t count) 291{ 292 ssize_t ret; --- 133 unchanged lines hidden (view full) --- 426F2FS_RW_ATTR(FAULT_INFO_RATE, f2fs_fault_info, inject_rate, inject_rate); 427F2FS_RW_ATTR(FAULT_INFO_TYPE, f2fs_fault_info, inject_type, inject_type); 428#endif 429F2FS_GENERAL_RO_ATTR(dirty_segments); 430F2FS_GENERAL_RO_ATTR(lifetime_write_kbytes); 431F2FS_GENERAL_RO_ATTR(features); 432F2FS_GENERAL_RO_ATTR(current_reserved_blocks); 433 |
442#ifdef CONFIG_F2FS_FS_ENCRYPTION | 434#ifdef CONFIG_FS_ENCRYPTION |
443F2FS_FEATURE_RO_ATTR(encryption, FEAT_CRYPTO); 444#endif 445#ifdef CONFIG_BLK_DEV_ZONED 446F2FS_FEATURE_RO_ATTR(block_zoned, FEAT_BLKZONED); 447#endif 448F2FS_FEATURE_RO_ATTR(atomic_write, FEAT_ATOMIC_WRITE); 449F2FS_FEATURE_RO_ATTR(extra_attr, FEAT_EXTRA_ATTR); 450F2FS_FEATURE_RO_ATTR(project_quota, FEAT_PROJECT_QUOTA); --- 44 unchanged lines hidden (view full) --- 495 ATTR_LIST(lifetime_write_kbytes), 496 ATTR_LIST(features), 497 ATTR_LIST(reserved_blocks), 498 ATTR_LIST(current_reserved_blocks), 499 NULL, 500}; 501 502static struct attribute *f2fs_feat_attrs[] = { | 435F2FS_FEATURE_RO_ATTR(encryption, FEAT_CRYPTO); 436#endif 437#ifdef CONFIG_BLK_DEV_ZONED 438F2FS_FEATURE_RO_ATTR(block_zoned, FEAT_BLKZONED); 439#endif 440F2FS_FEATURE_RO_ATTR(atomic_write, FEAT_ATOMIC_WRITE); 441F2FS_FEATURE_RO_ATTR(extra_attr, FEAT_EXTRA_ATTR); 442F2FS_FEATURE_RO_ATTR(project_quota, FEAT_PROJECT_QUOTA); --- 44 unchanged lines hidden (view full) --- 487 ATTR_LIST(lifetime_write_kbytes), 488 ATTR_LIST(features), 489 ATTR_LIST(reserved_blocks), 490 ATTR_LIST(current_reserved_blocks), 491 NULL, 492}; 493 494static struct attribute *f2fs_feat_attrs[] = { |
503#ifdef CONFIG_F2FS_FS_ENCRYPTION | 495#ifdef CONFIG_FS_ENCRYPTION |
504 ATTR_LIST(encryption), 505#endif 506#ifdef CONFIG_BLK_DEV_ZONED 507 ATTR_LIST(block_zoned), 508#endif 509 ATTR_LIST(atomic_write), 510 ATTR_LIST(extra_attr), 511 ATTR_LIST(project_quota), --- 221 unchanged lines hidden --- | 496 ATTR_LIST(encryption), 497#endif 498#ifdef CONFIG_BLK_DEV_ZONED 499 ATTR_LIST(block_zoned), 500#endif 501 ATTR_LIST(atomic_write), 502 ATTR_LIST(extra_attr), 503 ATTR_LIST(project_quota), --- 221 unchanged lines hidden --- |