Home | History | Annotate | Download | only in misc

Lines Matching refs:fs

90 static int	discard = 1;	/* attempt to discard device before fs creation */
126 "[-r fs-revision] [-E extended-option[,...]]\n"
127 "\t[-t fs-type] [-T usage-type ] [-U UUID] "
181 static void invalid_block(ext2_filsys fs EXT2FS_ATTR((unused)), blk_t blk)
190 static void read_bb_file(ext2_filsys fs, badblocks_list *bb_list,
202 retval = ext2fs_read_bb_FILE(fs, f, bb_list, invalid_block);
214 static void test_disk(ext2_filsys fs, badblocks_list *bb_list)
220 sprintf(buf, "badblocks -b %d -X %s%s%s %llu", fs->blocksize,
222 fs->device_name, ext2fs_blocks_count(fs->super)-1);
231 retval = ext2fs_read_bb_FILE(fs, f, bb_list, invalid_block);
240 static void handle_bad_blocks(ext2_filsys fs, badblocks_list bb_list)
259 must_be_good = fs->super->s_first_data_block + 1 + fs->desc_blocks;
260 for (i = fs->super->s_first_data_block; i <= must_be_good; i++) {
266 fs->super->s_first_data_block, must_be_good);
277 group_block = fs->super->s_first_data_block +
278 fs->super->s_blocks_per_group;
280 for (i = 1; i < fs->group_desc_count; i++) {
282 for (j=0; j < fs->desc_blocks+1; j++) {
291 group = ext2fs_group_of_blk2(fs, group_block+j);
292 ext2fs_bg_free_blocks_count_set(fs, group, ext2fs_bg_free_blocks_count(fs, group) + 1);
293 ext2fs_group_desc_csum_set(fs, group);
294 ext2fs_free_blocks_count_add(fs->super, 1);
297 group_block += fs->super->s_blocks_per_group;
310 ext2fs_mark_block_bitmap2(fs->block_map, EXT2FS_B2C(fs, blk));
314 static void write_inode_tables(ext2_filsys fs, int lazy_flag, int itable_zeroed)
322 ext2fs_numeric_progress_init(fs, &progress,
324 fs->group_desc_count);
326 for (i = 0; i < fs->group_desc_count; i++) {
327 ext2fs_numeric_progress_update(fs, &progress, i);
329 blk = ext2fs_inode_table_loc(fs, i);
330 num = fs->inode_blocks_per_group;
333 num = ext2fs_div_ceil((fs->super->s_inodes_per_group -
334 ext2fs_bg_itable_unused(fs, i)) *
335 EXT2_INODE_SIZE(fs->super),
336 EXT2_BLOCK_SIZE(fs->super));
339 ext2fs_bg_flags_set(fs, i, EXT2_BG_INODE_ZEROED);
340 ext2fs_group_desc_csum_set(fs, i);
342 retval = ext2fs_zero_blocks2(fs, blk, num, &blk, &num);
357 ext2fs_numeric_progress_close(fs, &progress,
361 static void create_root_dir(ext2_filsys fs)
366 retval = ext2fs_mkdir(fs, EXT2_ROOT_INO, EXT2_ROOT_INO, 0);
373 retval = ext2fs_read_inode(fs, EXT2_ROOT_INO, &inode);
385 retval = ext2fs_write_new_inode(fs, EXT2_ROOT_INO, &inode);
394 static void create_lost_and_found(ext2_filsys fs)
402 fs->umask = 077;
403 retval = ext2fs_mkdir(fs, EXT2_ROOT_INO, 0, name);
410 retval = ext2fs_lookup(fs, EXT2_ROOT_INO, name, strlen(name), 0, &ino);
420 if ((lpf_size += fs->blocksize) >= 16*1024 &&
421 lpf_size >= 2 * fs->blocksize)
423 retval = ext2fs_expand_dir(fs, ino);
432 static void create_bad_block_inode(ext2_filsys fs, badblocks_list bb_list)
436 ext2fs_mark_inode_bitmap2(fs->inode_map, EXT2_BAD_INO);
437 ext2fs_inode_alloc_stats2(fs, EXT2_BAD_INO, +1, 0);
438 retval = ext2fs_update_bb_inode(fs, bb_list);
447 static void reserve_inodes(ext2_filsys fs)
451 for (i = EXT2_ROOT_INO + 1; i < EXT2_FIRST_INODE(fs->super); i++)
452 ext2fs_inode_alloc_stats2(fs, i, +1, 0);
453 ext2fs_mark_ib_dirty(fs);
460 static void zap_sector(ext2_filsys fs, int sect, int nsect)
475 retval = io_channel_read_blk64(fs->io, 0, -512, buf);
489 io_channel_set_blksize(fs->io, 512);
490 retval = io_channel_write_blk64(fs->io, sect, -512*nsect, buf);
491 io_channel_set_blksize(fs->io, fs->blocksize);
498 static void create_journal_dev(ext2_filsys fs)
506 retval = ext2fs_create_journal_superblock(fs,
507 ext2fs_blocks_count(fs->super), 0, &buf);
517 ext2fs_numeric_progress_init(fs, &progress,
519 ext2fs_blocks_count(fs->super));
521 count = ext2fs_blocks_count(fs->super);
527 retval = ext2fs_zero_blocks2(fs, blk, c, &err_blk, &err_count);
537 ext2fs_numeric_progress_update(fs, &progress, blk);
541 ext2fs_numeric_progress_close(fs, &progress, NULL);
543 retval = io_channel_write_blk64(fs->io,
544 fs->super->s_first_data_block+1,
553 static void show_stats(ext2_filsys fs)
555 struct ext2_super_block *s = fs->super;
569 os = e2p_os2string(fs->super->s_creator_os);
573 printf(_("Block size=%u (log=%u)\n"), fs->blocksize,
575 if (EXT2_HAS_RO_COMPAT_FEATURE(fs->super,
578 fs->blocksize << fs->cluster_ratio_bits,
595 (s->s_reserved_gdt_blocks + fs->desc_blocks) *
597 if (fs->group_desc_count > 1)
598 printf(_("%u block groups\n"), fs->group_desc_count);
600 printf(_("%u block group\n"), fs->group_desc_count);
601 if (EXT2_HAS_RO_COMPAT_FEATURE(fs->super,
610 if (fs->group_desc_count == 1) {
618 for (i = 1; i < fs->group_desc_count; i++) {
620 if (!ext2fs_bg_has_super(fs, i))
1309 * Finally, we complain about fs_blocks_count > 2^32 on a non-64bit fs.
1722 * determine the appropriate file system types so the fs can
1729 fprintf(stderr, "%s", _("Failed to parse fs types list\n"));
1988 if (access("/sys/fs/ext4/features/lazy_itable_init", R_OK) == 0)
2274 static int mke2fs_discard_device(ext2_filsys fs)
2277 blk64_t blocks = ext2fs_blocks_count(fs->super);
2287 retval = io_channel_discard(fs->io, 0, fs->blocksize);
2290 cur = fs->blocksize;
2293 count /= fs->blocksize;
2295 ext2fs_numeric_progress_init(fs, &progress,
2299 ext2fs_numeric_progress_update(fs, &progress, cur);
2304 retval = io_channel_discard(fs->io, cur, count);
2311 ext2fs_numeric_progress_close(fs, &progress,
2316 ext2fs_numeric_progress_close(fs, &progress,
2322 static void fix_cluster_bg_counts(ext2_filsys fs)
2328 num_clusters = EXT2FS_B2C(fs, ext2fs_blocks_count(fs->super));
2330 for (cluster = EXT2FS_B2C(fs, fs->super->s_first_data_block);
2332 if (!ext2fs_test_block_bitmap2(fs->block_map,
2333 EXT2FS_C2B(fs, cluster))) {
2338 if ((num == fs->super->s_clusters_per_group) ||
2340 ext2fs_bg_free_blocks_count_set(fs, group, grp_free);
2341 ext2fs_group_desc_csum_set(fs, group);
2347 ext2fs_free_blocks_count_set(fs->super, EXT2FS_C2B(fs, tot_free));
2350 static int create_quota_inodes(ext2_filsys fs)
2354 quota_init_context(&qctx, fs, -1);
2365 ext2_filsys fs;
2418 retval = ext2fs_initialize(device_name, flags, &fs_param, io_ptr, &fs);
2429 journal_blocks = figure_journal_size(journal_size, fs);
2433 retval = mke2fs_discard_device(fs);
2434 if (!retval && io_channel_discard_zeroes_data(fs->io)) {
2444 sprintf(tdb_string, "tdb_data_size=%d", fs->blocksize <= 4096 ?
2445 32768 : fs->blocksize * 8);
2446 io_channel_set_options(fs->io, tdb_string);
2449 fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
2457 fs->super->s_kbytes_written = 1;
2463 zap_sector(fs, 2, 6);
2469 if (uuid_parse(fs_uuid, fs->super->s_uuid) !=0) {
2475 uuid_generate(fs->super->s_uuid);
2484 fs->super->s_def_hash_version = (hash_alg >= 0) ? hash_alg :
2486 uuid_generate((unsigned char *) fs->super->s_hash_seed);
2503 fs->super->s_checkinterval = EXT2_DFL_CHECKINTERVAL;
2504 fs->super->s_max_mnt_count = EXT2_DFL_MAX_MNT_COUNT;
2510 for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
2511 val += fs->super->s_uuid[i];
2512 fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
2514 fs->super->s_max_mnt_count = -1;
2519 if (creator_os && !set_os(fs
2528 if (fs->super->s_creator_os == EXT2_OS_HURD)
2529 fs->super->s_feature_incompat &=
2536 memset(fs->super->s_volume_name, 0,
2537 sizeof(fs->super->s_volume_name));
2538 strncpy(fs->super->s_volume_name, volume_label,
2539 sizeof(fs->super->s_volume_name));
2546 memset(fs->super->s_last_mounted, 0,
2547 sizeof(fs->super->s_last_mounted));
2548 strncpy(fs->super->s_last_mounted, mount_dir,
2549 sizeof(fs->super->s_last_mounted));
2553 show_stats(fs);
2558 if (fs->super->s_feature_incompat &
2560 create_journal_dev(fs);
2561 exit(ext2fs_close(fs) ? 1 : 0);
2565 read_bb_file(fs, &bb_list, bad_blocks_filename);
2567 test_disk(fs, &bb_list);
2569 handle_bad_blocks(fs, bb_list);
2570 fs->stride = fs_stride = fs->super->s_raid_stride;
2573 retval = ext2fs_allocate_tables(fs);
2582 retval = ext2fs_convert_subcluster_bitmap(fs, &fs->block_map);
2590 fs->super->s_state |= EXT2_ERROR_FS;
2591 fs->flags &= ~(EXT2_FLAG_IB_DIRTY|EXT2_FLAG_BB_DIRTY);
2598 if (fs->super->s_feature_ro_compat &
2600 for (i = 0; i < fs->group_desc_count; i++)
2601 ext2fs_bg_itable_unused_set(fs, i, 0);
2605 blk64_t rsv = 65536 / fs->blocksize;
2606 blk64_t blocks = ext2fs_blocks_count(fs->super);
2611 zap_sector(fs, 0, 2);
2623 retval = ext2fs_zero_blocks2(fs, start, blocks - start,
2631 write_inode_tables(fs, lazy_itable_init, itable_zeroed);
2632 create_root_dir(fs);
2633 create_lost_and_found(fs);
2634 reserve_inodes(fs);
2635 create_bad_block_inode(fs, bb_list);
2636 if (fs->super->s_feature_compat &
2638 retval = ext2fs_create_resize_inode(fs);
2657 fs->blocksize, unix_io_manager, &jfs);
2669 retval = ext2fs_add_journal_device(fs, jfs);
2685 fs->super->s_journal_inum = EXT2_JOURNAL_INO;
2690 fs->super->s_feature_compat &=
2699 retval = ext2fs_add_journal_inode(fs, journal_blocks,
2711 fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) {
2712 retval = ext2fs_mmp_init(fs);
2722 fs->super->s_mmp_update_interval);
2727 fix_cluster_bg_counts(fs);
2730 create_quota_inodes(fs);
2735 checkinterval = fs->super->s_checkinterval;
2736 max_mnt_count = fs->super->s_max_mnt_count;
2737 retval = ext2fs_close(fs);