Lines Matching refs:fs
43 (struct ext2_block_group *bg, const struct ext_filesystem *fs) in ext4fs_bg_free_inodes_inc() argument
46 if (fs->gdsize == 64) in ext4fs_bg_free_inodes_inc()
51 if (fs->gdsize == 64) in ext4fs_bg_free_inodes_inc()
56 (struct ext2_block_group *bg, const struct ext_filesystem *fs) in ext4fs_bg_free_blocks_inc() argument
59 if (fs->gdsize == 64) in ext4fs_bg_free_blocks_inc()
64 if (fs->gdsize == 64) in ext4fs_bg_free_blocks_inc()
72 struct ext_filesystem *fs = get_fs(); in ext4fs_update() local
77 (struct ext2_sblock *)fs->sb, (uint32_t)SUPERBLOCK_SIZE); in ext4fs_update()
80 for (i = 0; i < fs->no_blkgrp; i++) { in ext4fs_update()
81 bgd = ext4fs_get_group_descriptor(fs, i); in ext4fs_update()
83 uint64_t b_bitmap_blk = ext4fs_bg_get_block_id(bgd, fs); in ext4fs_update()
84 put_ext4(b_bitmap_blk * fs->blksz, in ext4fs_update()
85 fs->blk_bmaps[i], fs->blksz); in ext4fs_update()
89 for (i = 0; i < fs->no_blkgrp; i++) { in ext4fs_update()
90 bgd = ext4fs_get_group_descriptor(fs, i); in ext4fs_update()
91 uint64_t i_bitmap_blk = ext4fs_bg_get_inode_id(bgd, fs); in ext4fs_update()
92 put_ext4(i_bitmap_blk * fs->blksz, in ext4fs_update()
93 fs->inode_bmaps[i], fs->blksz); in ext4fs_update()
97 put_ext4((uint64_t)((uint64_t)fs->gdtable_blkno * (uint64_t)fs->blksz), in ext4fs_update()
98 (struct ext2_block_group *)fs->gdtable, in ext4fs_update()
99 (fs->blksz * fs->no_blk_pergdt)); in ext4fs_update()
110 struct ext_filesystem *fs = get_fs(); in ext4fs_get_bgdtable() local
111 int gdsize_total = ROUND(fs->no_blkgrp * fs->gdsize, fs->blksz); in ext4fs_get_bgdtable()
112 fs->no_blk_pergdt = gdsize_total / fs->blksz; in ext4fs_get_bgdtable()
115 fs->gdtable = zalloc(gdsize_total); in ext4fs_get_bgdtable()
116 if (!fs->gdtable) in ext4fs_get_bgdtable()
119 status = ext4fs_devread((lbaint_t)fs->gdtable_blkno * fs->sect_perblk, in ext4fs_get_bgdtable()
120 0, fs->blksz * fs->no_blk_pergdt, fs->gdtable); in ext4fs_get_bgdtable()
124 if (ext4fs_log_gdt(fs->gdtable)) { in ext4fs_get_bgdtable()
131 free(fs->gdtable); in ext4fs_get_bgdtable()
132 fs->gdtable = NULL; in ext4fs_get_bgdtable()
146 struct ext_filesystem *fs = get_fs(); in delete_single_indirect_block() local
147 char *journal_buffer = zalloc(fs->blksz); in delete_single_indirect_block()
158 if (fs->blksz == 1024) { in delete_single_indirect_block()
163 ext4fs_reset_block_bmap(blknr, fs->blk_bmaps[bg_idx], bg_idx); in delete_single_indirect_block()
165 bgd = ext4fs_get_group_descriptor(fs, bg_idx); in delete_single_indirect_block()
166 ext4fs_bg_free_blocks_inc(bgd, fs); in delete_single_indirect_block()
167 ext4fs_sb_free_blocks_inc(fs->sb); in delete_single_indirect_block()
170 uint64_t b_bitmap_blk = ext4fs_bg_get_block_id(bgd, fs); in delete_single_indirect_block()
172 b_bitmap_blk * fs->sect_perblk, in delete_single_indirect_block()
173 0, fs->blksz, journal_buffer); in delete_single_indirect_block()
197 struct ext_filesystem *fs = get_fs(); in delete_double_indirect_block() local
198 char *journal_buffer = zalloc(fs->blksz); in delete_double_indirect_block()
205 di_buffer = zalloc(fs->blksz); in delete_double_indirect_block()
212 status = ext4fs_devread((lbaint_t)blknr * fs->sect_perblk, 0, in delete_double_indirect_block()
213 fs->blksz, (char *)di_buffer); in delete_double_indirect_block()
214 for (i = 0; i < fs->blksz / sizeof(int); i++) { in delete_double_indirect_block()
220 if (fs->blksz == 1024) { in delete_double_indirect_block()
226 bgd = ext4fs_get_group_descriptor(fs, bg_idx); in delete_double_indirect_block()
228 fs->blk_bmaps[bg_idx], bg_idx); in delete_double_indirect_block()
230 ext4fs_bg_free_blocks_inc(bgd, fs); in delete_double_indirect_block()
231 ext4fs_sb_free_blocks_inc(fs->sb); in delete_double_indirect_block()
235 ext4fs_bg_get_block_id(bgd, fs); in delete_double_indirect_block()
237 * fs->sect_perblk, 0, in delete_double_indirect_block()
238 fs->blksz, in delete_double_indirect_block()
253 if (fs->blksz == 1024) { in delete_double_indirect_block()
259 bgd = ext4fs_get_group_descriptor(fs, bg_idx); in delete_double_indirect_block()
260 ext4fs_reset_block_bmap(blknr, fs->blk_bmaps[bg_idx], bg_idx); in delete_double_indirect_block()
261 ext4fs_bg_free_blocks_inc(bgd, fs); in delete_double_indirect_block()
262 ext4fs_sb_free_blocks_inc(fs->sb); in delete_double_indirect_block()
265 uint64_t b_bitmap_blk = ext4fs_bg_get_block_id(bgd, fs); in delete_double_indirect_block()
266 status = ext4fs_devread(b_bitmap_blk * fs->sect_perblk, in delete_double_indirect_block()
267 0, fs->blksz, journal_buffer); in delete_double_indirect_block()
296 struct ext_filesystem *fs = get_fs(); in delete_triple_indirect_block() local
297 char *journal_buffer = zalloc(fs->blksz); in delete_triple_indirect_block()
304 tigp_buffer = zalloc(fs->blksz); in delete_triple_indirect_block()
311 status = ext4fs_devread((lbaint_t)blknr * fs->sect_perblk, 0, in delete_triple_indirect_block()
312 fs->blksz, (char *)tigp_buffer); in delete_triple_indirect_block()
313 for (i = 0; i < fs->blksz / sizeof(int); i++) { in delete_triple_indirect_block()
318 tip_buffer = zalloc(fs->blksz); in delete_triple_indirect_block()
323 fs->sect_perblk, 0, fs->blksz, in delete_triple_indirect_block()
325 for (j = 0; j < fs->blksz / sizeof(int); j++) { in delete_triple_indirect_block()
329 if (fs->blksz == 1024) { in delete_triple_indirect_block()
336 fs->blk_bmaps[bg_idx], in delete_triple_indirect_block()
341 bgd = ext4fs_get_group_descriptor(fs, bg_idx); in delete_triple_indirect_block()
342 ext4fs_bg_free_blocks_inc(bgd, fs); in delete_triple_indirect_block()
343 ext4fs_sb_free_blocks_inc(fs->sb); in delete_triple_indirect_block()
347 ext4fs_bg_get_block_id(bgd, fs); in delete_triple_indirect_block()
351 fs->sect_perblk, 0, in delete_triple_indirect_block()
352 fs->blksz, in delete_triple_indirect_block()
371 if (fs->blksz == 1024) { in delete_triple_indirect_block()
377 fs->blk_bmaps[bg_idx], bg_idx); in delete_triple_indirect_block()
381 bgd = ext4fs_get_group_descriptor(fs, bg_idx); in delete_triple_indirect_block()
382 ext4fs_bg_free_blocks_inc(bgd, fs); in delete_triple_indirect_block()
383 ext4fs_sb_free_blocks_inc(fs->sb); in delete_triple_indirect_block()
387 ext4fs_bg_get_block_id(bgd, fs); in delete_triple_indirect_block()
388 memset(journal_buffer, '\0', fs->blksz); in delete_triple_indirect_block()
390 fs->sect_perblk, 0, in delete_triple_indirect_block()
391 fs->blksz, in delete_triple_indirect_block()
406 if (fs->blksz == 1024) { in delete_triple_indirect_block()
411 ext4fs_reset_block_bmap(blknr, fs->blk_bmaps[bg_idx], bg_idx); in delete_triple_indirect_block()
413 bgd = ext4fs_get_group_descriptor(fs, bg_idx); in delete_triple_indirect_block()
414 ext4fs_bg_free_blocks_inc(bgd, fs); in delete_triple_indirect_block()
415 ext4fs_sb_free_blocks_inc(fs->sb); in delete_triple_indirect_block()
418 uint64_t b_bitmap_blk = ext4fs_bg_get_block_id(bgd, fs); in delete_triple_indirect_block()
419 status = ext4fs_devread(b_bitmap_blk * fs->sect_perblk, in delete_triple_indirect_block()
420 0, fs->blksz, journal_buffer); in delete_triple_indirect_block()
457 struct ext_filesystem *fs = get_fs(); in ext4fs_delete_file() local
458 char *journal_buffer = zalloc(fs->blksz); in ext4fs_delete_file()
466 no_blocks = le32_to_cpu(inode.size) / fs->blksz; in ext4fs_delete_file()
467 if (le32_to_cpu(inode.size) % fs->blksz) in ext4fs_delete_file()
499 if (fs->blksz == 1024) { in ext4fs_delete_file()
504 ext4fs_reset_block_bmap(blknr, fs->blk_bmaps[bg_idx], in ext4fs_delete_file()
509 bgd = ext4fs_get_group_descriptor(fs, bg_idx); in ext4fs_delete_file()
510 ext4fs_bg_free_blocks_inc(bgd, fs); in ext4fs_delete_file()
511 ext4fs_sb_free_blocks_inc(fs->sb); in ext4fs_delete_file()
514 uint64_t b_bitmap_blk = ext4fs_bg_get_block_id(bgd, fs); in ext4fs_delete_file()
515 status = ext4fs_devread(b_bitmap_blk * fs->sect_perblk, in ext4fs_delete_file()
516 0, fs->blksz, in ext4fs_delete_file()
528 inodes_per_block = fs->blksz / fs->inodesz; in ext4fs_delete_file()
534 bgd = ext4fs_get_group_descriptor(fs, ibmap_idx); in ext4fs_delete_file()
535 blkno = ext4fs_bg_get_inode_table_id(bgd, fs) + in ext4fs_delete_file()
539 blkoff = ((inodeno) % inodes_per_block) * fs->inodesz; in ext4fs_delete_file()
542 read_buffer = zalloc(fs->blksz); in ext4fs_delete_file()
546 status = ext4fs_devread((lbaint_t)blkno * fs->sect_perblk, in ext4fs_delete_file()
547 0, fs->blksz, read_buffer); in ext4fs_delete_file()
556 memset(inode_buffer, '\0', fs->inodesz); in ext4fs_delete_file()
564 ext4fs_reset_inode_bmap(inodeno, fs->inode_bmaps[ibmap_idx], ibmap_idx); in ext4fs_delete_file()
565 ext4fs_bg_free_inodes_inc(bgd, fs); in ext4fs_delete_file()
566 ext4fs_sb_free_inodes_inc(fs->sb); in ext4fs_delete_file()
568 memset(journal_buffer, '\0', fs->blksz); in ext4fs_delete_file()
569 status = ext4fs_devread(ext4fs_bg_get_inode_id(bgd, fs) * in ext4fs_delete_file()
570 fs->sect_perblk, 0, fs->blksz, journal_buffer); in ext4fs_delete_file()
573 if (ext4fs_log_journal(journal_buffer, ext4fs_bg_get_inode_id(bgd, fs))) in ext4fs_delete_file()
601 struct ext_filesystem *fs = get_fs(); in ext4fs_init() local
604 fs->blksz = EXT2_BLOCK_SIZE(ext4fs_root); in ext4fs_init()
605 fs->sect_perblk = fs->blksz >> fs->dev_desc->log2blksz; in ext4fs_init()
608 fs->sb = zalloc(SUPERBLOCK_SIZE); in ext4fs_init()
609 if (!fs->sb) in ext4fs_init()
611 if (!ext4_read_superblock((char *)fs->sb)) in ext4fs_init()
619 fs->no_blkgrp = (uint32_t)ext4fs_div_roundup( in ext4fs_init()
625 fs->gdtable_blkno = ((EXT2_MIN_BLOCK_SIZE == fs->blksz) + 1); in ext4fs_init()
632 fs->blk_bmaps = zalloc(fs->no_blkgrp * sizeof(char *)); in ext4fs_init()
633 if (!fs->blk_bmaps) in ext4fs_init()
635 for (i = 0; i < fs->no_blkgrp; i++) { in ext4fs_init()
636 fs->blk_bmaps[i] = zalloc(fs->blksz); in ext4fs_init()
637 if (!fs->blk_bmaps[i]) in ext4fs_init()
641 for (i = 0; i < fs->no_blkgrp; i++) { in ext4fs_init()
643 ext4fs_get_group_descriptor(fs, i); in ext4fs_init()
644 status = ext4fs_devread(ext4fs_bg_get_block_id(bgd, fs) * in ext4fs_init()
645 fs->sect_perblk, 0, in ext4fs_init()
646 fs->blksz, (char *)fs->blk_bmaps[i]); in ext4fs_init()
652 fs->inode_bmaps = zalloc(fs->no_blkgrp * sizeof(unsigned char *)); in ext4fs_init()
653 if (!fs->inode_bmaps) in ext4fs_init()
655 for (i = 0; i < fs->no_blkgrp; i++) { in ext4fs_init()
656 fs->inode_bmaps[i] = zalloc(fs->blksz); in ext4fs_init()
657 if (!fs->inode_bmaps[i]) in ext4fs_init()
661 for (i = 0; i < fs->no_blkgrp; i++) { in ext4fs_init()
663 ext4fs_get_group_descriptor(fs, i); in ext4fs_init()
664 status = ext4fs_devread(ext4fs_bg_get_inode_id(bgd, fs) * in ext4fs_init()
665 fs->sect_perblk, in ext4fs_init()
666 0, fs->blksz, in ext4fs_init()
667 (char *)fs->inode_bmaps[i]); in ext4fs_init()
678 for (i = 0; i < fs->no_blkgrp; i++) { in ext4fs_init()
680 ext4fs_get_group_descriptor(fs, i); in ext4fs_init()
682 ext4fs_bg_get_free_blocks(bgd, fs); in ext4fs_init()
684 if (real_free_blocks != ext4fs_sb_get_free_blocks(fs->sb)) in ext4fs_init()
685 ext4fs_sb_set_free_blocks(fs->sb, real_free_blocks); in ext4fs_init()
700 struct ext_filesystem *fs = get_fs(); in ext4fs_deinit() local
704 char *temp_buff = zalloc(fs->blksz); in ext4fs_deinit()
710 ext4fs_devread((lbaint_t)blknr * fs->sect_perblk, 0, fs->blksz, in ext4fs_deinit()
714 put_ext4((uint64_t) ((uint64_t)blknr * (uint64_t)fs->blksz), in ext4fs_deinit()
715 (struct journal_superblock_t *)temp_buff, fs->blksz); in ext4fs_deinit()
721 ext4_read_superblock((char *)fs->sb); in ext4fs_deinit()
722 new_feature_incompat = le32_to_cpu(fs->sb->feature_incompat); in ext4fs_deinit()
724 fs->sb->feature_incompat = cpu_to_le32(new_feature_incompat); in ext4fs_deinit()
726 (struct ext2_sblock *)fs->sb, (uint32_t)SUPERBLOCK_SIZE); in ext4fs_deinit()
727 free(fs->sb); in ext4fs_deinit()
728 fs->sb = NULL; in ext4fs_deinit()
730 if (fs->blk_bmaps) { in ext4fs_deinit()
731 for (i = 0; i < fs->no_blkgrp; i++) { in ext4fs_deinit()
732 free(fs->blk_bmaps[i]); in ext4fs_deinit()
733 fs->blk_bmaps[i] = NULL; in ext4fs_deinit()
735 free(fs->blk_bmaps); in ext4fs_deinit()
736 fs->blk_bmaps = NULL; in ext4fs_deinit()
739 if (fs->inode_bmaps) { in ext4fs_deinit()
740 for (i = 0; i < fs->no_blkgrp; i++) { in ext4fs_deinit()
741 free(fs->inode_bmaps[i]); in ext4fs_deinit()
742 fs->inode_bmaps[i] = NULL; in ext4fs_deinit()
744 free(fs->inode_bmaps); in ext4fs_deinit()
745 fs->inode_bmaps = NULL; in ext4fs_deinit()
748 free(fs->gdtable); in ext4fs_deinit()
749 fs->gdtable = NULL; in ext4fs_deinit()
754 fs->first_pass_ibmap = 0; in ext4fs_deinit()
755 fs->first_pass_bbmap = 0; in ext4fs_deinit()
756 fs->curr_inode_no = 0; in ext4fs_deinit()
757 fs->curr_blkno = 0; in ext4fs_deinit()
770 struct ext_filesystem *fs = get_fs(); in ext4fs_write_file() local
771 int log2blksz = fs->dev_desc->log2blksz; in ext4fs_write_file()
783 blockcnt = ((len + pos) + fs->blksz - 1) / fs->blksz; in ext4fs_write_file()
785 for (i = pos / fs->blksz; i < blockcnt; i++) { in ext4fs_write_file()
787 int blockend = fs->blksz; in ext4fs_write_file()
830 buf += fs->blksz - skipfirst; in ext4fs_write_file()
865 struct ext_filesystem *fs = get_fs(); in ext4fs_write() local
874 g_parent_inode = zalloc(fs->inodesz); in ext4fs_write()
883 missing_feat = le32_to_cpu(fs->sb->feature_incompat) & ~EXT4_FEATURE_INCOMPAT_SUPP; in ext4fs_write()
889 missing_feat = le32_to_cpu(fs->sb->feature_ro_compat) & ~EXT4_FEATURE_RO_COMPAT_SUPP; in ext4fs_write()
895 inodes_per_block = fs->blksz / fs->inodesz; in ext4fs_write()
909 existing_file_inode = (struct ext2_inode *)zalloc(fs->inodesz); in ext4fs_write()
919 fs->first_pass_bbmap = 0; in ext4fs_write()
920 fs->curr_blkno = 0; in ext4fs_write()
922 fs->first_pass_ibmap = 0; in ext4fs_write()
923 fs->curr_inode_no = 0; in ext4fs_write()
937 blks_reqd_for_file = lldiv(bytes_reqd_for_file, fs->blksz); in ext4fs_write()
938 if (do_div(bytes_reqd_for_file, fs->blksz) != 0) { in ext4fs_write()
944 if (le32_to_cpu(fs->sb->free_blocks) < blks_reqd_for_file) { in ext4fs_write()
953 inode_buffer = zalloc(fs->inodesz); in ext4fs_write()
984 file_inode->blockcnt = cpu_to_le32((blks_reqd_for_file * fs->blksz) >> in ext4fs_write()
987 temp_ptr = zalloc(fs->blksz); in ext4fs_write()
992 bgd = ext4fs_get_group_descriptor(fs, ibmap_idx); in ext4fs_write()
993 itable_blkno = ext4fs_bg_get_inode_table_id(bgd, fs) + in ext4fs_write()
996 blkoff = (inodeno % inodes_per_block) * fs->inodesz; in ext4fs_write()
997 ext4fs_devread((lbaint_t)itable_blkno * fs->sect_perblk, 0, fs->blksz, in ext4fs_write()
1002 memcpy(temp_ptr + blkoff, inode_buffer, fs->inodesz); in ext4fs_write()
1013 bgd = ext4fs_get_group_descriptor(fs, ibmap_idx); in ext4fs_write()
1014 parent_itable_blkno = ext4fs_bg_get_inode_table_id(bgd, fs) + in ext4fs_write()
1017 blkoff = (parent_inodeno % inodes_per_block) * fs->inodesz; in ext4fs_write()
1019 memset(temp_ptr, '\0', fs->blksz); in ext4fs_write()
1020 ext4fs_devread((lbaint_t)parent_itable_blkno * fs->sect_perblk, in ext4fs_write()
1021 0, fs->blksz, temp_ptr); in ext4fs_write()
1025 memcpy(temp_ptr + blkoff, g_parent_inode, fs->inodesz); in ext4fs_write()
1033 memcpy(temp_ptr + blkoff, g_parent_inode, fs->inodesz); in ext4fs_write()
1041 fs->first_pass_bbmap = 0; in ext4fs_write()
1042 fs->curr_blkno = 0; in ext4fs_write()
1043 fs->first_pass_ibmap = 0; in ext4fs_write()
1044 fs->curr_inode_no = 0; in ext4fs_write()