Lines Matching refs:fs
103 "[-r fs-revision] [-E extended-option[,...]]\n"
104 "\t[-T fs-type] [-jnqvFSV] device [blocks-count]\n"),
155 static void invalid_block(ext2_filsys fs EXT2FS_ATTR((unused)), blk_t blk)
164 static void read_bb_file(ext2_filsys fs, badblocks_list *bb_list,
176 retval = ext2fs_read_bb_FILE(fs, f, bb_list, invalid_block);
189 static void test_disk(ext2_filsys fs, badblocks_list *bb_list)
195 sprintf(buf, "badblocks -b %d -X %s%s%s %u", fs->blocksize,
197 fs->device_name, fs->super->s_blocks_count-1);
206 retval = ext2fs_read_bb_FILE(fs, f, bb_list, invalid_block);
216 static void handle_bad_blocks(ext2_filsys fs, badblocks_list bb_list)
235 must_be_good = fs->super->s_first_data_block + 1 + fs->desc_blocks;
236 for (i = fs->super->s_first_data_block; i <= must_be_good; i++) {
242 fs->super->s_first_data_block, must_be_good);
253 group_block = fs->super->s_first_data_block +
254 fs->super->s_blocks_per_group;
256 for (i = 1; i < fs->group_desc_count; i++) {
258 for (j=0; j < fs->desc_blocks+1; j++) {
267 group = ext2fs_group_of_blk(fs, group_block+j);
268 fs->group_desc[group].bg_free_blocks_count++;
269 fs->super->s_free_blocks_count++;
272 group_block += fs->super->s_blocks_per_group;
285 ext2fs_mark_block_bitmap(fs->block_map, blk);
353 static errcode_t zero_blocks(ext2_filsys fs, blk_t blk, int num,
361 /* If fs is null, clean up the static buffer and return */
362 if (!fs) {
371 buf = malloc(fs->blocksize * STRIDE_LENGTH);
377 memset(buf, 0, fs->blocksize * STRIDE_LENGTH);
388 retval = io_channel_write_blk(fs->io, blk, count, buf);
404 static void write_inode_tables(ext2_filsys fs)
417 fs->group_desc_count);
419 if (EXT2_HAS_COMPAT_FEATURE(fs->super,
423 for (i = 0; i < fs->group_desc_count; i++) {
426 blk = fs->group_desc[i].bg_inode_table;
427 num = fs->inode_blocks_per_group;
430 (fs->group_desc[i].bg_flags & EXT2_BG_INODE_UNINIT))) {
431 retval = zero_blocks(fs, blk, num, 0, &blk, &num);
450 static void setup_lazy_bg(ext2_filsys fs)
454 struct ext2_super_block *sb = fs->super;
455 struct ext2_group_desc *bg = fs->group_desc;
457 if (EXT2_HAS_COMPAT_FEATURE(fs->super,
459 for (i = 0; i < fs->group_desc_count; i++, bg++) {
461 (i == fs->group_desc_count-1))
470 blks = ext2fs_super_and_bgd_loc(fs, i, 0, 0, 0, 0);
481 static void create_root_dir(ext2_filsys fs)
487 retval = ext2fs_mkdir(fs, EXT2_ROOT_INO, EXT2_ROOT_INO, 0);
493 retval = ext2fs_read_inode(fs, EXT2_ROOT_INO, &inode);
507 retval = ext2fs_write_new_inode(fs, EXT2_ROOT_INO, &inode);
516 static void create_lost_and_found(ext2_filsys fs)
524 fs->umask = 077;
525 retval = ext2fs_mkdir(fs, EXT2_ROOT_INO, 0, name);
532 retval = ext2fs_lookup(fs, EXT2_ROOT_INO, name, strlen(name), 0, &ino);
540 if ((lpf_size += fs->blocksize) >= 16*1024)
542 retval = ext2fs_expand_dir(fs, ino);
551 static void create_bad_block_inode(ext2_filsys fs, badblocks_list bb_list)
555 ext2fs_mark_inode_bitmap(fs->inode_map, EXT2_BAD_INO);
556 fs->group_desc[0].bg_free_inodes_count--;
557 fs->super->s_free_inodes_count--;
558 retval = ext2fs_update_bb_inode(fs, bb_list);
567 static void reserve_inodes(ext2_filsys fs)
572 for (i = EXT2_ROOT_INO + 1; i < EXT2_FIRST_INODE(fs->super); i++) {
573 ext2fs_mark_inode_bitmap(fs->inode_map, i);
574 group = ext2fs_group_of_ino(fs, i);
575 fs->group_desc[group].bg_free_inodes_count--;
576 fs->super->s_free_inodes_count--;
578 ext2fs_mark_ib_dirty(fs);
585 static void zap_sector(ext2_filsys fs, int sect, int nsect)
600 retval = io_channel_read_blk(fs->io, 0, -512, buf);
614 io_channel_set_blksize(fs->io, 512);
615 retval = io_channel_write_blk(fs->io, sect, -512*nsect, buf);
616 io_channel_set_blksize(fs->io, fs->blocksize);
623 static void create_journal_dev(ext2_filsys fs)
631 retval = ext2fs_create_journal_superblock(fs,
632 fs->super->s_blocks_count, 0, &buf);
642 fs->super->s_blocks_count);
644 retval = zero_blocks(fs, 0, fs->super->s_blocks_count,
654 retval = io_channel_write_blk(fs->io,
655 fs->super->s_first_data_block+1,
665 static void show_stats(ext2_filsys fs)
667 struct ext2_super_block *s = fs->super;
682 os = e2p_os2string(fs->super->s_creator_os);
686 printf(_("Block size=%u (log=%u)\n"), fs->blocksize,
688 printf(_("Fragment size=%u (log=%u)\n"), fs->fragsize,
698 (s->s_reserved_gdt_blocks + fs->desc_blocks) *
699 (fs->blocksize / sizeof(struct ext2_group_desc)) *
701 if (fs->group_desc_count > 1)
702 printf(_("%u block groups\n"), fs->group_desc_count);
704 printf(_("%u block group\n"), fs->group_desc_count);
709 if (fs->group_desc_count == 1) {
717 for (i = 1; i < fs->group_desc_count; i++) {
719 if (!ext2fs_bg_has_super(fs, i))
1573 ext2_filsys fs;
1599 io_ptr, &fs);
1606 fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
1612 zap_sector(fs, 2, 6);
1617 uuid_generate(fs->super->s_uuid);
1622 fs->super->s_def_hash_version = EXT2_HASH_TEA;
1623 uuid_generate((unsigned char *) fs->super->s_hash_seed);
1630 for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
1631 val += fs->super->s_uuid[i];
1632 fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
1637 if (creator_os && !set_os(fs->super, creator_os)) {
1646 if (fs->super->s_creator_os == EXT2_OS_HURD)
1647 fs->super->s_feature_incompat &=
1654 memset(fs->super->s_volume_name, 0,
1655 sizeof(fs->super->s_volume_name));
1656 strncpy(fs->super->s_volume_name, volume_label,
1657 sizeof(fs->super->s_volume_name));
1664 memset(fs->super->s_last_mounted, 0,
1665 sizeof(fs->super->s_last_mounted));
1666 strncpy(fs->super->s_last_mounted, mount_dir,
1667 sizeof(fs->super->s_last_mounted));
1671 show_stats(fs);
1676 if (fs->super->s_feature_incompat &
1678 create_journal_dev(fs);
1679 exit(ext2fs_close(fs) ? 1 : 0);
1683 read_bb_file(fs, &bb_list, bad_blocks_filename);
1687 test_disk(fs, &bb_list);
1690 handle_bad_blocks(fs, bb_list);
1691 fs->stride = fs_stride = fs->super->s_raid_stride;
1692 retval = ext2fs_allocate_tables(fs);
1699 fs->super->s_state |= EXT2_ERROR_FS;
1700 fs->flags &= ~(EXT2_FLAG_IB_DIRTY|EXT2_FLAG_BB_DIRTY);
1703 unsigned int rsv = 65536 / fs->blocksize;
1704 unsigned long blocks = fs->super->s_blocks_count;
1709 zap_sector(fs, 0, 2);
1721 retval = zero_blocks(fs, start, blocks - start,
1729 setup_lazy_bg(fs);
1730 write_inode_tables(fs);
1731 create_root_dir(fs);
1732 create_lost_and_found(fs);
1733 reserve_inodes(fs);
1734 create_bad_block_inode(fs, bb_list);
1735 if (fs->super->s_feature_compat &
1737 retval = ext2fs_create_resize_inode(fs);
1755 fs->blocksize, unix_io_manager, &jfs);
1767 retval = ext2fs_add_journal_device(fs, jfs);
1781 journal_blocks = figure_journal_size(journal_size, fs);
1784 fs->super->s_feature_compat &=
1793 retval = ext2fs_add_journal_inode(fs, journal_blocks,
1808 retval = ext2fs_flush(fs);
1816 print_check_message(fs);
1818 val = ext2fs_close(fs);