Beispiel #1
0
void do_show_super_stats(int argc, char *argv[])
{
    dgrp_t	i;
    FILE 	*out;
    struct ext2_group_desc *gdp;
    int	c, header_only = 0;
    int	numdirs = 0;
    const char *usage = "Usage: show_super [-h]";

    reset_getopt();
    while ((c = getopt (argc, argv, "h")) != EOF) {
        switch (c) {
        case 'h':
            header_only++;
            break;
        default:
            com_err(argv[0], 0, usage);
            return;
        }
    }
    if (optind != argc) {
        com_err(argv[0], 0, usage);
        return;
    }
    if (check_fs_open(argv[0]))
        return;
    out = open_pager();

    list_super2(current_fs->super, out);
    for (i=0; i < current_fs->group_desc_count; i++)
        numdirs += current_fs->group_desc[i].bg_used_dirs_count;
    fprintf(out, "Directories:              %d\n", numdirs);

    if (header_only) {
        close_pager(out);
        return;
    }

    gdp = &current_fs->group_desc[0];
    for (i = 0; i < current_fs->group_desc_count; i++, gdp++)
        fprintf(out, " Group %2d: block bitmap at %d, "
                "inode bitmap at %d, "
                "inode table at %d\n"
                "           %d free %s, "
                "%d free %s, "
                "%d used %s\n",
                i, gdp->bg_block_bitmap,
                gdp->bg_inode_bitmap, gdp->bg_inode_table,
                gdp->bg_free_blocks_count,
                gdp->bg_free_blocks_count != 1 ? "blocks" : "block",
                gdp->bg_free_inodes_count,
                gdp->bg_free_inodes_count != 1 ? "inodes" : "inode",
                gdp->bg_used_dirs_count,
                gdp->bg_used_dirs_count != 1 ? "directories"
                : "directory");
    close_pager(out);
}
Beispiel #2
0
void list_super (struct ext2_super_block * s)
{
	list_super2(s, stdout);
}
void do_show_super_stats(int argc, char *argv[])
{
	dgrp_t	i;
	FILE 	*out;
	struct ext2_group_desc *gdp;
	int	c, header_only = 0;
	int	numdirs = 0, first, gdt_csum;

	reset_getopt();
	while ((c = getopt (argc, argv, "h")) != EOF) {
		switch (c) {
		case 'h':
			header_only++;
			break;
		default:
			goto print_usage;
		}
	}
	if (optind != argc) {
		goto print_usage;
	}
	if (check_fs_open(argv[0]))
		return;
	out = open_pager();

	list_super2(current_fs->super, out);
	for (i=0; i < current_fs->group_desc_count; i++)
		numdirs += current_fs->group_desc[i].bg_used_dirs_count;
	fprintf(out, "Directories:              %d\n", numdirs);

	if (header_only) {
		close_pager(out);
		return;
	}

	gdt_csum = EXT2_HAS_RO_COMPAT_FEATURE(current_fs->super,
					      EXT4_FEATURE_RO_COMPAT_GDT_CSUM);
	gdp = &current_fs->group_desc[0];
	for (i = 0; i < current_fs->group_desc_count; i++, gdp++) {
		fprintf(out, " Group %2d: block bitmap at %u, "
		        "inode bitmap at %u, "
		        "inode table at %u\n"
		        "           %d free %s, "
		        "%d free %s, "
		        "%d used %s%s",
		        i, gdp->bg_block_bitmap,
		        gdp->bg_inode_bitmap, gdp->bg_inode_table,
		        gdp->bg_free_blocks_count,
		        gdp->bg_free_blocks_count != 1 ? "blocks" : "block",
		        gdp->bg_free_inodes_count,
		        gdp->bg_free_inodes_count != 1 ? "inodes" : "inode",
		        gdp->bg_used_dirs_count,
		        gdp->bg_used_dirs_count != 1 ? "directories"
				: "directory", gdt_csum ? ", " : "\n");
		if (gdt_csum)
			fprintf(out, "%d unused %s\n",
				gdp->bg_itable_unused,
				gdp->bg_itable_unused != 1 ? "inodes":"inode");
		first = 1;
		print_bg_opts(gdp, EXT2_BG_INODE_UNINIT, "Inode not init",
			      &first, out);
		print_bg_opts(gdp, EXT2_BG_BLOCK_UNINIT, "Block not init",
			      &first, out);
		if (gdt_csum) {
			fprintf(out, "%sChecksum 0x%04x",
				first ? "           [":", ", gdp->bg_checksum);
			first = 0;
		}
		if (!first)
			fputs("]\n", out);
	}
	close_pager(out);
	return;
print_usage:
	fprintf(stderr, "%s: Usage: show_super [-h]\n", argv[0]);
}