ext2fs_badblocks_list_iterate_end(bb_iter);
}
- static void write_inode_tables(ext2_filsys fs, int lazy_flag)
-/*
- * These functions implement a generalized progress meter.
- */
-struct progress_struct {
- char format[20];
- char backup[80];
- __u32 max;
- int skip_progress;
-};
-
-static void progress_init(struct progress_struct *progress,
- const char *label,__u32 max)
-{
- int i;
-
- memset(progress, 0, sizeof(struct progress_struct));
- if (quiet)
- return;
-
- /*
- * Figure out how many digits we need
- */
- i = int_log10(max);
- sprintf(progress->format, "%%%dd/%%%dld", i, i);
- memset(progress->backup, '\b', sizeof(progress->backup)-1);
- progress->backup[sizeof(progress->backup)-1] = 0;
- if ((2*i)+1 < (int) sizeof(progress->backup))
- progress->backup[(2*i)+1] = 0;
- progress->max = max;
-
- progress->skip_progress = 0;
- if (getenv("MKE2FS_SKIP_PROGRESS"))
- progress->skip_progress++;
-
- fputs(label, stdout);
- fflush(stdout);
-}
-
-static void progress_update(struct progress_struct *progress, __u32 val)
-{
- if ((progress->format[0] == 0) || progress->skip_progress)
- return;
- printf(progress->format, val, progress->max);
- fputs(progress->backup, stdout);
-}
-
-static void progress_close(struct progress_struct *progress)
-{
- if (progress->format[0] == 0)
- return;
- fputs(_("done \n"), stdout);
-}
-
+ static void write_inode_tables(ext2_filsys fs, int lazy_flag, int itable_zeroed)
{
errcode_t retval;
- blk_t blk;
+ blk64_t blk;
dgrp_t i;
int num, ipb;
- struct progress_struct progress;
+ struct ext2fs_numeric_progress_struct progress;
- if (quiet)
- memset(&progress, 0, sizeof(progress));
- else
- progress_init(&progress, _("Writing inode tables: "),
- fs->group_desc_count);
+ ext2fs_numeric_progress_init(fs, &progress,
+ _("Writing inode tables: "),
+ fs->group_desc_count);
for (i = 0; i < fs->group_desc_count; i++) {
- progress_update(&progress, i);
+ ext2fs_numeric_progress_update(fs, &progress, i);
- blk = fs->group_desc[i].bg_inode_table;
+ blk = ext2fs_inode_table_loc(fs, i);
num = fs->inode_blocks_per_group;
if (lazy_flag) {
EXT2_INODE_SIZE(fs->super)) +
EXT2_BLOCK_SIZE(fs->super) - 1) /
EXT2_BLOCK_SIZE(fs->super));
- } else {
+ }
+ if (!lazy_flag || itable_zeroed) {
/* The kernel doesn't need to zero the itable blocks */
- fs->group_desc[i].bg_flags |= EXT2_BG_INODE_ZEROED;
+ ext2fs_bg_flags_set(fs, i, EXT2_BG_INODE_ZEROED);
ext2fs_group_desc_csum_set(fs, i);
}
- retval = ext2fs_zero_blocks(fs, blk, num, &blk, &num);
+ retval = ext2fs_zero_blocks2(fs, blk, num, &blk, &num);
if (retval) {
fprintf(stderr, _("\nCould not write %d "
- "blocks in inode table starting at %u: %s\n"),
+ "blocks in inode table starting at %llu: %s\n"),
num, blk, error_message(retval));
exit(1);
}
blocksize, sys_page_size);
}
if (optind < argc) {
- fs_param.s_blocks_count = parse_num_blocks(argv[optind++],
- fs_param.s_log_block_size);
- if (!fs_param.s_blocks_count) {
+ fs_blocks_count = parse_num_blocks2(argv[optind++],
+ fs_param.s_log_block_size);
+ if (!fs_blocks_count) {
- com_err(program_name, 0, _("invalid blocks count - %s"),
- argv[optind - 1]);
+ com_err(program_name, 0,
- _("invalid blocks count '%s' on device '%s'"),
++ _("invalid blocks '%s' on device '%s'"),
+ argv[optind - 1], device_name);
exit(1);
}
}
if (retval) {
com_err(program_name, retval,
- _("while zeroing block %u at end of filesystem"),
+ _("while zeroing block %llu at end of filesystem"),
ret_blk);
}
- write_inode_tables(fs, lazy_itable_init);
+ write_inode_tables(fs, lazy_itable_init, itable_zeroed);
create_root_dir(fs);
create_lost_and_found(fs);
reserve_inodes(fs);