Lines Matching refs:fs
119 "[-r fs-revision] [-E extended-option[,...]]\n"
120 "\t[-T fs-type] [-U UUID] [-jnqvFKSV] device [blocks-count]\n"),
171 static void invalid_block(ext2_filsys fs EXT2FS_ATTR((unused)), blk_t blk)
180 static void read_bb_file(ext2_filsys fs, badblocks_list *bb_list,
192 retval = ext2fs_read_bb_FILE(fs, f, bb_list, invalid_block);
205 static void test_disk(ext2_filsys fs, badblocks_list *bb_list)
211 sprintf(buf, "badblocks -b %d -X %s%s%s %u", fs->blocksize,
213 fs->device_name, fs->super->s_blocks_count-1);
222 retval = ext2fs_read_bb_FILE(fs, f, bb_list, invalid_block);
232 static void handle_bad_blocks(ext2_filsys fs, badblocks_list bb_list)
251 must_be_good = fs->super->s_first_data_block + 1 + fs->desc_blocks;
252 for (i = fs->super->s_first_data_block; i <= must_be_good; i++) {
258 fs->super->s_first_data_block, must_be_good);
269 group_block = fs->super->s_first_data_block +
270 fs->super->s_blocks_per_group;
272 for (i = 1; i < fs->group_desc_count; i++) {
274 for (j=0; j < fs->desc_blocks+1; j++) {
283 group = ext2fs_group_of_blk(fs, group_block+j);
284 fs->group_desc[group].bg_free_blocks_count++;
285 ext2fs_group_desc_csum_set(fs, group);
286 fs->super->s_free_blocks_count++;
289 group_block += fs->super->s_blocks_per_group;
302 ext2fs_mark_block_bitmap(fs->block_map, blk);
359 static void write_inode_tables(ext2_filsys fs, int lazy_flag)
371 fs->group_desc_count);
373 for (i = 0; i < fs->group_desc_count; i++) {
376 blk = fs->group_desc[i].bg_inode_table;
377 num = fs->inode_blocks_per_group;
380 ipb = fs->blocksize / EXT2_INODE_SIZE(fs->super);
381 num = ((((fs->super->s_inodes_per_group -
382 fs->group_desc[i].bg_itable_unused) *
383 EXT2_INODE_SIZE(fs->super)) +
384 EXT2_BLOCK_SIZE(fs->super) - 1) /
385 EXT2_BLOCK_SIZE(fs->super));
388 fs->group_desc[i].bg_flags |= EXT2_BG_INODE_ZEROED;
389 ext2fs_group_desc_csum_set(fs, i);
391 retval = ext2fs_zero_blocks(fs, blk, num, &blk, &num);
409 static void create_root_dir(ext2_filsys fs)
415 retval = ext2fs_mkdir(fs, EXT2_ROOT_INO, EXT2_ROOT_INO, 0);
421 retval = ext2fs_read_inode(fs, EXT2_ROOT_INO, &inode);
435 retval = ext2fs_write_new_inode(fs, EXT2_ROOT_INO, &inode);
444 static void create_lost_and_found(ext2_filsys fs)
452 fs->umask = 077;
453 retval = ext2fs_mkdir(fs, EXT2_ROOT_INO, 0, name);
460 retval = ext2fs_lookup(fs, EXT2_ROOT_INO, name, strlen(name), 0, &ino);
470 if ((lpf_size += fs->blocksize) >= 16*1024 &&
471 lpf_size >= 2 * fs->blocksize)
473 retval = ext2fs_expand_dir(fs, ino);
482 static void create_bad_block_inode(ext2_filsys fs, badblocks_list bb_list)
486 ext2fs_mark_inode_bitmap(fs->inode_map, EXT2_BAD_INO);
487 ext2fs_inode_alloc_stats2(fs, EXT2_BAD_INO, +1, 0);
488 retval = ext2fs_update_bb_inode(fs, bb_list);
497 static void reserve_inodes(ext2_filsys fs)
501 for (i = EXT2_ROOT_INO + 1; i < EXT2_FIRST_INODE(fs->super); i++)
502 ext2fs_inode_alloc_stats2(fs, i, +1, 0);
503 ext2fs_mark_ib_dirty(fs);
510 static void zap_sector(ext2_filsys fs, int sect, int nsect)
525 retval = io_channel_read_blk(fs->io, 0, -512, buf);
539 io_channel_set_blksize(fs->io, 512);
540 retval = io_channel_write_blk(fs->io, sect, -512*nsect, buf);
541 io_channel_set_blksize(fs->io, fs->blocksize);
548 static void create_journal_dev(ext2_filsys fs)
556 retval = ext2fs_create_journal_superblock(fs,
557 fs->super->s_blocks_count, 0, &buf);
567 fs->super->s_blocks_count);
570 count = fs->super->s_blocks_count;
576 retval = ext2fs_zero_blocks(fs, blk, c, &err_blk, &err_count);
590 retval = io_channel_write_blk(fs->io,
591 fs->super->s_first_data_block+1,
601 static void show_stats(ext2_filsys fs)
603 struct ext2_super_block *s = fs->super;
618 os = e2p_os2string(fs->super->s_creator_os);
622 printf(_("Block size=%u (log=%u)\n"), fs->blocksize,
624 printf(_("Fragment size=%u (log=%u)\n"), fs->fragsize,
636 (s->s_reserved_gdt_blocks + fs->desc_blocks) *
638 if (fs->group_desc_count > 1)
639 printf(_("%u block groups\n"), fs->group_desc_count);
641 printf(_("%u block group\n"), fs->group_desc_count);
646 if (fs->group_desc_count == 1) {
654 for (i = 1; i < fs->group_desc_count; i++) {
656 if (!ext2fs_bg_has_super(fs, i))
1568 fprintf(stderr, _("Failed to parse fs types list\n"));
1935 static void mke2fs_discard_blocks(ext2_filsys fs)
1943 blocks = fs->super->s_blocks_count;
1944 blocksize = EXT2_BLOCK_SIZE(fs->super);
1949 fd = open64(fs->device_name, O_RDWR);
1951 fd = open(fs->device_name, O_RDWR);
1972 #define mke2fs_discard_blocks(fs)
1978 ext2_filsys fs;
2013 io_ptr, &fs);
2021 mke2fs_discard_blocks(fs);
2023 sprintf(tdb_string, "tdb_data_size=%d", fs->blocksize <= 4096 ?
2024 32768 : fs->blocksize * 8);
2025 io_channel_set_options(fs->io, tdb_string);
2028 fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
2036 fs->super->s_kbytes_written = 1;
2042 zap_sector(fs, 2, 6);
2048 if (uuid_parse(fs_uuid, fs->super->s_uuid) !=0) {
2054 uuid_generate(fs->super->s_uuid);
2062 fs->super->s_def_hash_version = (hash_alg >= 0) ? hash_alg :
2064 uuid_generate((unsigned char *) fs->super->s_hash_seed);
2071 for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
2072 val += fs->super->s_uuid[i];
2073 fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
2078 if (creator_os && !set_os(fs->super, creator_os)) {
2087 if (fs->super->s_creator_os == EXT2_OS_HURD)
2088 fs->super->s_feature_incompat &=
2095 memset(fs->super->s_volume_name, 0,
2096 sizeof(fs->super->s_volume_name));
2097 strncpy(fs->super->s_volume_name, volume_label,
2098 sizeof(fs->super->s_volume_name));
2105 memset(fs->super->s_last_mounted, 0,
2106 sizeof(fs->super->s_last_mounted));
2107 strncpy(fs->super->s_last_mounted, mount_dir,
2108 sizeof(fs->super->s_last_mounted));
2112 show_stats(fs);
2117 if (fs->super->s_feature_incompat &
2119 create_journal_dev(fs);
2120 exit(ext2fs_close(fs) ? 1 : 0);
2124 read_bb_file(fs, &bb_list, bad_blocks_filename);
2128 test_disk(fs, &bb_list);
2131 handle_bad_blocks(fs, bb_list);
2132 fs->stride = fs_stride = fs->super->s_raid_stride;
2133 retval = ext2fs_allocate_tables(fs);
2140 fs->super->s_state |= EXT2_ERROR_FS;
2141 fs->flags &= ~(EXT2_FLAG_IB_DIRTY|EXT2_FLAG_BB_DIRTY);
2144 unsigned int rsv = 65536 / fs->blocksize;
2145 unsigned long blocks = fs->super->s_blocks_count;
2150 zap_sector(fs, 0, 2);
2162 retval = ext2fs_zero_blocks(fs, start, blocks - start,
2170 write_inode_tables(fs, lazy_itable_init);
2171 create_root_dir(fs);
2172 create_lost_and_found(fs);
2173 reserve_inodes(fs);
2174 create_bad_block_inode(fs, bb_list);
2175 if (fs->super->s_feature_compat &
2177 retval = ext2fs_create_resize_inode(fs);
2195 fs->blocksize, unix_io_manager, &jfs);
2207 retval = ext2fs_add_journal_device(fs, jfs);
2221 journal_blocks = figure_journal_size(journal_size, fs);
2225 fs->super->s_journal_inum = EXT2_JOURNAL_INO;
2230 fs->super->s_feature_compat &=
2239 retval = ext2fs_add_journal_inode(fs, journal_blocks,
2254 retval = ext2fs_flush(fs);
2262 print_check_message(fs);
2264 val = ext2fs_close(fs);