Lines Matching refs:fs
32 __u16 ext2fs_group_desc_csum(ext2_filsys fs, dgrp_t group) in ext2fs_group_desc_csum() argument
34 struct ext2_group_desc *desc = ext2fs_group_desc(fs, fs->group_desc, in ext2fs_group_desc_csum()
36 size_t size = EXT2_DESC_SIZE(fs->super); in ext2fs_group_desc_csum()
40 if (fs->super->s_feature_ro_compat & EXT4_FEATURE_RO_COMPAT_GDT_CSUM) { in ext2fs_group_desc_csum()
53 ext2fs_swap_group_desc2(fs, in ext2fs_group_desc_csum()
59 crc = ext2fs_crc16(~0, fs->super->s_uuid, in ext2fs_group_desc_csum()
60 sizeof(fs->super->s_uuid)); in ext2fs_group_desc_csum()
85 int ext2fs_group_desc_csum_verify(ext2_filsys fs, dgrp_t group) in ext2fs_group_desc_csum_verify() argument
87 if (EXT2_HAS_RO_COMPAT_FEATURE(fs->super, in ext2fs_group_desc_csum_verify()
89 (ext2fs_bg_checksum(fs, group) != in ext2fs_group_desc_csum_verify()
90 ext2fs_group_desc_csum(fs, group))) in ext2fs_group_desc_csum_verify()
96 void ext2fs_group_desc_csum_set(ext2_filsys fs, dgrp_t group) in ext2fs_group_desc_csum_set() argument
98 if (!EXT2_HAS_RO_COMPAT_FEATURE(fs->super, in ext2fs_group_desc_csum_set()
104 ext2fs_bg_checksum_set(fs, group, ext2fs_group_desc_csum(fs, group)); in ext2fs_group_desc_csum_set()
124 errcode_t ext2fs_set_gdt_csum(ext2_filsys fs) in ext2fs_set_gdt_csum() argument
126 struct ext2_super_block *sb = fs->super; in ext2fs_set_gdt_csum()
130 if (!fs->inode_map) in ext2fs_set_gdt_csum()
133 if (!EXT2_HAS_RO_COMPAT_FEATURE(fs->super, in ext2fs_set_gdt_csum()
137 for (i = 0; i < fs->group_desc_count; i++) { in ext2fs_set_gdt_csum()
138 __u32 old_csum = ext2fs_bg_checksum(fs, i); in ext2fs_set_gdt_csum()
139 __u32 old_unused = ext2fs_bg_itable_unused(fs, i); in ext2fs_set_gdt_csum()
140 __u32 old_flags = ext2fs_bg_flags(fs, i); in ext2fs_set_gdt_csum()
141 __u32 old_free_inodes_count = ext2fs_bg_free_inodes_count(fs, i); in ext2fs_set_gdt_csum()
144 ext2fs_bg_flags_set(fs, i, EXT2_BG_INODE_UNINIT); in ext2fs_set_gdt_csum()
145 ext2fs_bg_itable_unused_set(fs, i, sb->s_inodes_per_group); in ext2fs_set_gdt_csum()
149 find_last_inode_ingrp(fs->inode_map, in ext2fs_set_gdt_csum()
152 ext2fs_bg_flags_clear(fs, i, EXT2_BG_INODE_UNINIT); in ext2fs_set_gdt_csum()
153 ext2fs_bg_itable_unused_set(fs, i, unused); in ext2fs_set_gdt_csum()
156 ext2fs_group_desc_csum_set(fs, i); in ext2fs_set_gdt_csum()
157 if (old_flags != ext2fs_bg_flags(fs, i)) in ext2fs_set_gdt_csum()
159 if (old_unused != ext2fs_bg_itable_unused(fs, i)) in ext2fs_set_gdt_csum()
161 if (old_csum != ext2fs_bg_checksum(fs, i)) in ext2fs_set_gdt_csum()
165 ext2fs_mark_super_dirty(fs); in ext2fs_set_gdt_csum()
172 void print_csum(const char *msg, ext2_filsys fs, dgrp_t group) in print_csum() argument
176 struct ext2_group_desc *desc = ext2fs_group_desc(fs, fs->group_desc, in print_csum()
178 size_t size = EXT2_DESC_SIZE(fs->super); in print_csum()
179 struct ext2_super_block *sb = fs->super; in print_csum()
193 ext2fs_swap_group_desc2(fs, (struct ext2_group_desc *) &swabdesc); in print_csum()
201 crc1 = ext2fs_crc16(~0, sb->s_uuid, sizeof(fs->super->s_uuid)); in print_csum()
216 ext2fs_group_desc_csum(fs, group)); in print_csum()
226 ext2_filsys fs; in main() local
239 test_io_manager, &fs); in main()
245 memcpy(fs->super->s_uuid, sb_uuid, 16); in main()
246 fs->super->s_feature_ro_compat = EXT4_FEATURE_RO_COMPAT_GDT_CSUM; in main()
248 for (i=0; i < fs->group_desc_count; i++) { in main()
249 ext2fs_block_bitmap_loc_set(fs, i, 124); in main()
250 ext2fs_inode_bitmap_loc_set(fs, i, 125); in main()
251 ext2fs_inode_table_loc_set(fs, i, 126); in main()
252 ext2fs_bg_free_blocks_count_set(fs, i, 31119); in main()
253 ext2fs_bg_free_inodes_count_set(fs, i, 15701); in main()
254 ext2fs_bg_used_dirs_count_set(fs, i, 2); in main()
255 ext2fs_bg_flags_zap(fs, i); in main()
258 csum1 = ext2fs_group_desc_csum(fs, 0); in main()
259 print_csum("csum0000", fs, 0); in main()
265 csum2 = ext2fs_group_desc_csum(fs, 1); in main()
266 print_csum("csum0001", fs, 1); in main()
271 csum2 = ext2fs_group_desc_csum(fs, 2); in main()
272 print_csum("csumffff", fs, 2); in main()
277 ext2fs_bg_checksum_set(fs, 0, csum1); in main()
278 csum2 = ext2fs_group_desc_csum(fs, 0); in main()
279 print_csum("csum_set", fs, 0); in main()
284 if (!ext2fs_group_desc_csum_verify(fs, 0)) { in main()
288 memset(fs->super->s_uuid, 0x30, sizeof(fs->super->s_uuid)); in main()
289 print_csum("new_uuid", fs, 0); in main()
290 if (ext2fs_group_desc_csum_verify(fs, 0) != 0) { in main()
294 csum1 = ext2fs_group_desc_csum(fs, 0); in main()
295 ext2fs_bg_checksum_set(fs, 0, csum1); in main()
296 print_csum("csum_new", fs, 0); in main()
297 ext2fs_bg_free_blocks_count_set(fs, 0, 1); in main()
298 csum2 = ext2fs_group_desc_csum(fs, 0); in main()
299 print_csum("csum_blk", fs, 0); in main()