sysfs.c (c441bfb5f2866de71e092c1b9d866a65978dfe1a) | sysfs.c (a7d9fe3c33887085a2e10c085d378126314dc222) |
---|---|
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 */ --- 23 unchanged lines hidden (view full) --- 32 STAT_INFO, /* struct f2fs_stat_info */ 33#endif 34#ifdef CONFIG_F2FS_FAULT_INJECTION 35 FAULT_INFO_RATE, /* struct f2fs_fault_info */ 36 FAULT_INFO_TYPE, /* struct f2fs_fault_info */ 37#endif 38 RESERVED_BLOCKS, /* struct f2fs_sb_info */ 39 CPRC_INFO, /* struct ckpt_req_control */ | 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 */ --- 23 unchanged lines hidden (view full) --- 32 STAT_INFO, /* struct f2fs_stat_info */ 33#endif 34#ifdef CONFIG_F2FS_FAULT_INJECTION 35 FAULT_INFO_RATE, /* struct f2fs_fault_info */ 36 FAULT_INFO_TYPE, /* struct f2fs_fault_info */ 37#endif 38 RESERVED_BLOCKS, /* struct f2fs_sb_info */ 39 CPRC_INFO, /* struct ckpt_req_control */ |
40 ATGC_INFO, /* struct atgc_management */ |
|
40}; 41 42struct f2fs_attr { 43 struct attribute attr; 44 ssize_t (*show)(struct f2fs_attr *, struct f2fs_sb_info *, char *); 45 ssize_t (*store)(struct f2fs_attr *, struct f2fs_sb_info *, 46 const char *, size_t); 47 int struct_type; --- 22 unchanged lines hidden (view full) --- 70 return (unsigned char *)&F2FS_OPTION(sbi).fault_info; 71#endif 72#ifdef CONFIG_F2FS_STAT_FS 73 else if (struct_type == STAT_INFO) 74 return (unsigned char *)F2FS_STAT(sbi); 75#endif 76 else if (struct_type == CPRC_INFO) 77 return (unsigned char *)&sbi->cprc_info; | 41}; 42 43struct f2fs_attr { 44 struct attribute attr; 45 ssize_t (*show)(struct f2fs_attr *, struct f2fs_sb_info *, char *); 46 ssize_t (*store)(struct f2fs_attr *, struct f2fs_sb_info *, 47 const char *, size_t); 48 int struct_type; --- 22 unchanged lines hidden (view full) --- 71 return (unsigned char *)&F2FS_OPTION(sbi).fault_info; 72#endif 73#ifdef CONFIG_F2FS_STAT_FS 74 else if (struct_type == STAT_INFO) 75 return (unsigned char *)F2FS_STAT(sbi); 76#endif 77 else if (struct_type == CPRC_INFO) 78 return (unsigned char *)&sbi->cprc_info; |
79 else if (struct_type == ATGC_INFO) 80 return (unsigned char *)&sbi->am; |
|
78 return NULL; 79} 80 81static ssize_t dirty_segments_show(struct f2fs_attr *a, 82 struct f2fs_sb_info *sbi, char *buf) 83{ 84 return sprintf(buf, "%llu\n", 85 (unsigned long long)(dirty_segments(sbi))); --- 64 unchanged lines hidden (view full) --- 150 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 151 len ? ", " : "", "verity"); 152 if (f2fs_sb_has_sb_chksum(sbi)) 153 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 154 len ? ", " : "", "sb_checksum"); 155 if (f2fs_sb_has_casefold(sbi)) 156 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 157 len ? ", " : "", "casefold"); | 81 return NULL; 82} 83 84static ssize_t dirty_segments_show(struct f2fs_attr *a, 85 struct f2fs_sb_info *sbi, char *buf) 86{ 87 return sprintf(buf, "%llu\n", 88 (unsigned long long)(dirty_segments(sbi))); --- 64 unchanged lines hidden (view full) --- 153 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 154 len ? ", " : "", "verity"); 155 if (f2fs_sb_has_sb_chksum(sbi)) 156 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 157 len ? ", " : "", "sb_checksum"); 158 if (f2fs_sb_has_casefold(sbi)) 159 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 160 len ? ", " : "", "casefold"); |
161 if (f2fs_sb_has_readonly(sbi)) 162 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 163 len ? ", " : "", "readonly"); |
|
158 if (f2fs_sb_has_compression(sbi)) 159 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 160 len ? ", " : "", "compression"); 161 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 162 len ? ", " : "", "pin_file"); 163 len += scnprintf(buf + len, PAGE_SIZE - len, "\n"); 164 return len; 165} --- 324 unchanged lines hidden (view full) --- 490 if (!strcmp(a->attr.name, "compr_new_inode")) { 491 if (t != 0) 492 return -EINVAL; 493 sbi->compr_new_inode = 0; 494 return count; 495 } 496#endif 497 | 164 if (f2fs_sb_has_compression(sbi)) 165 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 166 len ? ", " : "", "compression"); 167 len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s", 168 len ? ", " : "", "pin_file"); 169 len += scnprintf(buf + len, PAGE_SIZE - len, "\n"); 170 return len; 171} --- 324 unchanged lines hidden (view full) --- 496 if (!strcmp(a->attr.name, "compr_new_inode")) { 497 if (t != 0) 498 return -EINVAL; 499 sbi->compr_new_inode = 0; 500 return count; 501 } 502#endif 503 |
504 if (!strcmp(a->attr.name, "atgc_candidate_ratio")) { 505 if (t > 100) 506 return -EINVAL; 507 sbi->am.candidate_ratio = t; 508 return count; 509 } 510 511 if (!strcmp(a->attr.name, "atgc_age_weight")) { 512 if (t > 100) 513 return -EINVAL; 514 sbi->am.age_weight = t; 515 return count; 516 } 517 |
|
498 *ui = (unsigned int)t; 499 500 return count; 501} 502 503static ssize_t f2fs_sbi_store(struct f2fs_attr *a, 504 struct f2fs_sb_info *sbi, 505 const char *buf, size_t count) --- 50 unchanged lines hidden (view full) --- 556 FEAT_FLEXIBLE_INLINE_XATTR, 557 FEAT_QUOTA_INO, 558 FEAT_INODE_CRTIME, 559 FEAT_LOST_FOUND, 560 FEAT_VERITY, 561 FEAT_SB_CHECKSUM, 562 FEAT_CASEFOLD, 563 FEAT_COMPRESSION, | 518 *ui = (unsigned int)t; 519 520 return count; 521} 522 523static ssize_t f2fs_sbi_store(struct f2fs_attr *a, 524 struct f2fs_sb_info *sbi, 525 const char *buf, size_t count) --- 50 unchanged lines hidden (view full) --- 576 FEAT_FLEXIBLE_INLINE_XATTR, 577 FEAT_QUOTA_INO, 578 FEAT_INODE_CRTIME, 579 FEAT_LOST_FOUND, 580 FEAT_VERITY, 581 FEAT_SB_CHECKSUM, 582 FEAT_CASEFOLD, 583 FEAT_COMPRESSION, |
584 FEAT_RO, |
|
564 FEAT_TEST_DUMMY_ENCRYPTION_V2, 565}; 566 567static ssize_t f2fs_feature_show(struct f2fs_attr *a, 568 struct f2fs_sb_info *sbi, char *buf) 569{ 570 switch (a->id) { 571 case FEAT_CRYPTO: --- 5 unchanged lines hidden (view full) --- 577 case FEAT_FLEXIBLE_INLINE_XATTR: 578 case FEAT_QUOTA_INO: 579 case FEAT_INODE_CRTIME: 580 case FEAT_LOST_FOUND: 581 case FEAT_VERITY: 582 case FEAT_SB_CHECKSUM: 583 case FEAT_CASEFOLD: 584 case FEAT_COMPRESSION: | 585 FEAT_TEST_DUMMY_ENCRYPTION_V2, 586}; 587 588static ssize_t f2fs_feature_show(struct f2fs_attr *a, 589 struct f2fs_sb_info *sbi, char *buf) 590{ 591 switch (a->id) { 592 case FEAT_CRYPTO: --- 5 unchanged lines hidden (view full) --- 598 case FEAT_FLEXIBLE_INLINE_XATTR: 599 case FEAT_QUOTA_INO: 600 case FEAT_INODE_CRTIME: 601 case FEAT_LOST_FOUND: 602 case FEAT_VERITY: 603 case FEAT_SB_CHECKSUM: 604 case FEAT_CASEFOLD: 605 case FEAT_COMPRESSION: |
606 case FEAT_RO: |
|
585 case FEAT_TEST_DUMMY_ENCRYPTION_V2: 586 return sprintf(buf, "supported\n"); 587 } 588 return 0; 589} 590 591#define F2FS_ATTR_OFFSET(_struct_type, _name, _mode, _show, _store, _offset) \ 592static struct f2fs_attr f2fs_attr_##_name = { \ --- 106 unchanged lines hidden (view full) --- 699F2FS_FEATURE_RO_ATTR(quota_ino, FEAT_QUOTA_INO); 700F2FS_FEATURE_RO_ATTR(inode_crtime, FEAT_INODE_CRTIME); 701F2FS_FEATURE_RO_ATTR(lost_found, FEAT_LOST_FOUND); 702#ifdef CONFIG_FS_VERITY 703F2FS_FEATURE_RO_ATTR(verity, FEAT_VERITY); 704#endif 705F2FS_FEATURE_RO_ATTR(sb_checksum, FEAT_SB_CHECKSUM); 706F2FS_FEATURE_RO_ATTR(casefold, FEAT_CASEFOLD); | 607 case FEAT_TEST_DUMMY_ENCRYPTION_V2: 608 return sprintf(buf, "supported\n"); 609 } 610 return 0; 611} 612 613#define F2FS_ATTR_OFFSET(_struct_type, _name, _mode, _show, _store, _offset) \ 614static struct f2fs_attr f2fs_attr_##_name = { \ --- 106 unchanged lines hidden (view full) --- 721F2FS_FEATURE_RO_ATTR(quota_ino, FEAT_QUOTA_INO); 722F2FS_FEATURE_RO_ATTR(inode_crtime, FEAT_INODE_CRTIME); 723F2FS_FEATURE_RO_ATTR(lost_found, FEAT_LOST_FOUND); 724#ifdef CONFIG_FS_VERITY 725F2FS_FEATURE_RO_ATTR(verity, FEAT_VERITY); 726#endif 727F2FS_FEATURE_RO_ATTR(sb_checksum, FEAT_SB_CHECKSUM); 728F2FS_FEATURE_RO_ATTR(casefold, FEAT_CASEFOLD); |
729F2FS_FEATURE_RO_ATTR(readonly, FEAT_RO); |
|
707#ifdef CONFIG_F2FS_FS_COMPRESSION 708F2FS_FEATURE_RO_ATTR(compression, FEAT_COMPRESSION); 709F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_written_block, compr_written_block); 710F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_saved_block, compr_saved_block); 711F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_new_inode, compr_new_inode); 712#endif 713 | 730#ifdef CONFIG_F2FS_FS_COMPRESSION 731F2FS_FEATURE_RO_ATTR(compression, FEAT_COMPRESSION); 732F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_written_block, compr_written_block); 733F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_saved_block, compr_saved_block); 734F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_new_inode, compr_new_inode); 735#endif 736 |
737/* For ATGC */ 738F2FS_RW_ATTR(ATGC_INFO, atgc_management, atgc_candidate_ratio, candidate_ratio); 739F2FS_RW_ATTR(ATGC_INFO, atgc_management, atgc_candidate_count, max_candidate_count); 740F2FS_RW_ATTR(ATGC_INFO, atgc_management, atgc_age_weight, age_weight); 741F2FS_RW_ATTR(ATGC_INFO, atgc_management, atgc_age_threshold, age_threshold); 742 |
|
714#define ATTR_LIST(name) (&f2fs_attr_##name.attr) 715static struct attribute *f2fs_attrs[] = { 716 ATTR_LIST(gc_urgent_sleep_time), 717 ATTR_LIST(gc_min_sleep_time), 718 ATTR_LIST(gc_max_sleep_time), 719 ATTR_LIST(gc_no_gc_sleep_time), 720 ATTR_LIST(gc_idle), 721 ATTR_LIST(gc_urgent), --- 51 unchanged lines hidden (view full) --- 773 ATTR_LIST(moved_blocks_background), 774 ATTR_LIST(avg_vblocks), 775#endif 776#ifdef CONFIG_F2FS_FS_COMPRESSION 777 ATTR_LIST(compr_written_block), 778 ATTR_LIST(compr_saved_block), 779 ATTR_LIST(compr_new_inode), 780#endif | 743#define ATTR_LIST(name) (&f2fs_attr_##name.attr) 744static struct attribute *f2fs_attrs[] = { 745 ATTR_LIST(gc_urgent_sleep_time), 746 ATTR_LIST(gc_min_sleep_time), 747 ATTR_LIST(gc_max_sleep_time), 748 ATTR_LIST(gc_no_gc_sleep_time), 749 ATTR_LIST(gc_idle), 750 ATTR_LIST(gc_urgent), --- 51 unchanged lines hidden (view full) --- 802 ATTR_LIST(moved_blocks_background), 803 ATTR_LIST(avg_vblocks), 804#endif 805#ifdef CONFIG_F2FS_FS_COMPRESSION 806 ATTR_LIST(compr_written_block), 807 ATTR_LIST(compr_saved_block), 808 ATTR_LIST(compr_new_inode), 809#endif |
810 /* For ATGC */ 811 ATTR_LIST(atgc_candidate_ratio), 812 ATTR_LIST(atgc_candidate_count), 813 ATTR_LIST(atgc_age_weight), 814 ATTR_LIST(atgc_age_threshold), |
|
781 NULL, 782}; 783ATTRIBUTE_GROUPS(f2fs); 784 785static struct attribute *f2fs_feat_attrs[] = { 786#ifdef CONFIG_FS_ENCRYPTION 787 ATTR_LIST(encryption), 788 ATTR_LIST(test_dummy_encryption_v2), --- 9 unchanged lines hidden (view full) --- 798 ATTR_LIST(quota_ino), 799 ATTR_LIST(inode_crtime), 800 ATTR_LIST(lost_found), 801#ifdef CONFIG_FS_VERITY 802 ATTR_LIST(verity), 803#endif 804 ATTR_LIST(sb_checksum), 805 ATTR_LIST(casefold), | 815 NULL, 816}; 817ATTRIBUTE_GROUPS(f2fs); 818 819static struct attribute *f2fs_feat_attrs[] = { 820#ifdef CONFIG_FS_ENCRYPTION 821 ATTR_LIST(encryption), 822 ATTR_LIST(test_dummy_encryption_v2), --- 9 unchanged lines hidden (view full) --- 832 ATTR_LIST(quota_ino), 833 ATTR_LIST(inode_crtime), 834 ATTR_LIST(lost_found), 835#ifdef CONFIG_FS_VERITY 836 ATTR_LIST(verity), 837#endif 838 ATTR_LIST(sb_checksum), 839 ATTR_LIST(casefold), |
840 ATTR_LIST(readonly), |
|
806#ifdef CONFIG_F2FS_FS_COMPRESSION 807 ATTR_LIST(compression), 808#endif 809 NULL, 810}; 811ATTRIBUTE_GROUPS(f2fs_feat); 812 813F2FS_GENERAL_RO_ATTR(sb_status); --- 329 unchanged lines hidden --- | 841#ifdef CONFIG_F2FS_FS_COMPRESSION 842 ATTR_LIST(compression), 843#endif 844 NULL, 845}; 846ATTRIBUTE_GROUPS(f2fs_feat); 847 848F2FS_GENERAL_RO_ATTR(sb_status); --- 329 unchanged lines hidden --- |