Whamcloud - gitweb
Merge branch 'maint' into next
authorTheodore Ts'o <tytso@mit.edu>
Sun, 5 Jun 2011 00:24:36 +0000 (20:24 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 5 Jun 2011 00:24:36 +0000 (20:24 -0400)
Conflicts:
lib/ext2fs/bitmaps.c
lib/ext2fs/rw_bitmaps.c
misc/dumpe2fs.c

1  2 
lib/ext2fs/bitmaps.c
lib/ext2fs/ext2_fs.h
lib/ext2fs/ext2fs.h
lib/ext2fs/initialize.c
lib/ext2fs/openfs.c
lib/ext2fs/rw_bitmaps.c
misc/dumpe2fs.c
misc/mke2fs.c

@@@ -91,18 -78,9 +91,18 @@@ errcode_t ext2fs_allocate_block_bitmap(
        fs->write_bitmaps = ext2fs_write_bitmaps;
  
        start = fs->super->s_first_data_block;
 -      end = fs->super->s_blocks_count-1;
 -      real_end = (EXT2_CLUSTERS_PER_GROUP(fs->super)
 -                  * fs->group_desc_count)-1 + start;
 +      end = ext2fs_blocks_count(fs->super)-1;
-       real_end = ((__u64) EXT2_BLOCKS_PER_GROUP(fs->super)
++      real_end = ((__u64) EXT2_CLUSTERS_PER_GROUP(fs->super)
 +                  * (__u64) fs->group_desc_count)-1 + start;
 +
 +      if (fs->flags & EXT2_FLAG_64BITS)
 +              return (ext2fs_alloc_generic_bmap(fs,
 +                                EXT2_ET_MAGIC_BLOCK_BITMAP64,
 +                                EXT2FS_BMAP64_BITARRAY,
 +                                start, end, real_end, descr, ret));
 +
 +      if ((end > ~0U) || (real_end > ~0U))
 +              return EXT2_ET_CANT_USE_LEGACY_BITMAPS;
  
        return (ext2fs_make_generic_bitmap(EXT2_ET_MAGIC_BLOCK_BITMAP, fs,
                                           start, end, real_end,
Simple merge
@@@ -207,10 -195,10 +207,10 @@@ struct struct_ext2_filsys 
        char *                          device_name;
        struct ext2_super_block *       super;
        unsigned int                    blocksize;
-       int                             clustersize;
+       int                             cluster_ratio_bits;
        dgrp_t                          group_desc_count;
        unsigned long                   desc_blocks;
 -      struct ext2_group_desc *        group_desc;
 +      struct opaque_ext2_group_desc * group_desc;
        int                             inode_blocks_per_group;
        ext2fs_inode_bitmap             inode_map;
        ext2fs_block_bitmap             block_map;
Simple merge
Simple merge
@@@ -36,8 -36,8 +36,8 @@@ static errcode_t write_bitmaps(ext2_fil
        errcode_t       retval;
        char            *block_buf, *inode_buf;
        int             csum_flag = 0;
 -      blk_t           blk;
 -      blk_t           blk_itr = EXT2FS_B2C(fs, fs->super->s_first_data_block);
 +      blk64_t         blk;
-       blk64_t         blk_itr = fs->super->s_first_data_block;
++      blk64_t         blk_itr = EXT2FS_B2C(fs, fs->super->s_first_data_block);
        ext2_ino_t      ino_itr = 1;
  
        EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
  
                if (i == fs->group_desc_count - 1) {
                        /* Force bitmap padding for the last group */
-                       nbits = ((ext2fs_blocks_count(fs->super)
+                       nbits = EXT2FS_NUM_B2C(fs,
 -                             ((fs->super->s_blocks_count
 -                               - fs->super->s_first_data_block)
 -                              % EXT2_BLOCKS_PER_GROUP(fs->super)));
++                              ((ext2fs_blocks_count(fs->super)
 +                                - (__u64) fs->super->s_first_data_block)
-                                % (__u64) EXT2_BLOCKS_PER_GROUP(fs->super));
++                               % (__u64) EXT2_BLOCKS_PER_GROUP(fs->super)));
                        if (nbits)
                                for (j = nbits; j < fs->blocksize * 8; j++)
                                        ext2fs_set_bit(j, block_buf);
@@@ -146,9 -147,9 +147,9 @@@ static errcode_t read_bitmaps(ext2_fils
        int csum_flag = 0;
        int do_image = fs->flags & EXT2_FLAG_IMAGE_FILE;
        unsigned int    cnt;
 -      blk_t   blk;
 -      blk_t   blk_itr = EXT2FS_B2C(fs, fs->super->s_first_data_block);
 -      blk_t   blk_cnt;
 +      blk64_t blk;
-       blk64_t blk_itr = fs->super->s_first_data_block;
++      blk64_t blk_itr = EXT2FS_B2C(fs, fs->super->s_first_data_block);
 +      blk64_t   blk_cnt;
        ext2_ino_t ino_itr = 1;
        ext2_ino_t ino_cnt;
  
                }
                blk = (fs->image_header->offset_blockmap /
                       fs->blocksize);
-               blk_cnt = (blk64_t)EXT2_BLOCKS_PER_GROUP(fs->super) *
 -              blk_cnt = EXT2_CLUSTERS_PER_GROUP(fs->super) *
++              blk_cnt = (blk64_t)EXT2_CLUSTERS_PER_GROUP(fs->super) *
                        fs->group_desc_count;
                while (block_nbytes > 0) {
 -                      retval = io_channel_read_blk(fs->image_io, blk++,
 +                      retval = io_channel_read_blk64(fs->image_io, blk++,
                                                     1, block_bitmap);
                        if (retval)
                                goto cleanup;
diff --cc misc/dumpe2fs.c
@@@ -63,16 -63,16 +63,16 @@@ static void print_number(unsigned long 
                printf("%lu", num);
  }
  
 -static void print_range(unsigned long a, unsigned long b)
 +static void print_range(unsigned long long a, unsigned long long b)
  {
        if (hex_format)
 -              printf("0x%04lx-0x%04lx", a, b);
 +              printf("0x%llx-0x%llx", a, b);
        else
 -              printf("%lu-%lu", a, b);
 +              printf("%llu-%llu", a, b);
  }
  
- static void print_free (unsigned long group, char * bitmap,
-                       unsigned long nbytes, unsigned long offset)
+ static void print_free(unsigned long group, char * bitmap,
+                      unsigned long num, unsigned long offset, int ratio)
  {
        int p = 0;
        unsigned long i;
@@@ -150,10 -151,10 +151,10 @@@ static void list_desc (ext2_filsys fs
        int inode_blocks_per_group, old_desc_blocks, reserved_gdt;
        int             block_nbytes, inode_nbytes;
        int has_super;
-       blk64_t         blk_itr = fs->super->s_first_data_block;
 -      blk_t           blk_itr = EXT2FS_B2C(fs, fs->super->s_first_data_block);
++      blk64_t         blk_itr = EXT2FS_B2C(fs, fs->super->s_first_data_block);
        ext2_ino_t      ino_itr = 1;
  
-       block_nbytes = EXT2_BLOCKS_PER_GROUP(fs->super) / 8;
+       block_nbytes = EXT2_CLUSTERS_PER_GROUP(fs->super) / 8;
        inode_nbytes = EXT2_INODES_PER_GROUP(fs->super) / 8;
  
        if (fs->block_map)
                if (has_super)
                        fputc('\n', stdout);
                fputs(_("  Block bitmap at "), stdout);
 -              print_number(fs->group_desc[i].bg_block_bitmap);
 -              print_bg_rel_offset(fs, fs->group_desc[i].bg_block_bitmap, 0,
 +              print_number(ext2fs_block_bitmap_loc(fs, i));
 +              print_bg_rel_offset(fs, ext2fs_block_bitmap_loc(fs, i), 0,
                                    first_block, last_block);
 -
                fputs(_(", Inode bitmap at "), stdout);
 -              print_number(fs->group_desc[i].bg_inode_bitmap);
 -              print_bg_rel_offset(fs, fs->group_desc[i].bg_inode_bitmap, 0,
 +              print_number(ext2fs_inode_bitmap_loc(fs, i));
 +              print_bg_rel_offset(fs, ext2fs_inode_bitmap_loc(fs, i), 0,
                                    first_block, last_block);
 -
                fputs(_("\n  Inode table at "), stdout);
 -              print_range(fs->group_desc[i].bg_inode_table,
 -                          fs->group_desc[i].bg_inode_table +
 +              print_range(ext2fs_inode_table_loc(fs, i),
 +                          ext2fs_inode_table_loc(fs, i) +
                            inode_blocks_per_group - 1);
 -              print_bg_rel_offset(fs, fs->group_desc[i].bg_inode_table, 1,
 +              print_bg_rel_offset(fs, ext2fs_inode_table_loc(fs, i), 1,
                                    first_block, last_block);
 -
                printf (_("\n  %u free blocks, %u free inodes, "
                          "%u directories%s"),
 -                      fs->group_desc[i].bg_free_blocks_count,
 -                      fs->group_desc[i].bg_free_inodes_count,
 -                      fs->group_desc[i].bg_used_dirs_count,
 -                      fs->group_desc[i].bg_itable_unused ? "" : "\n");
 -              if (fs->group_desc[i].bg_itable_unused)
 +                      ext2fs_bg_free_blocks_count(fs, i),
 +                      ext2fs_bg_free_inodes_count(fs, i),
 +                      ext2fs_bg_used_dirs_count(fs, i),
 +                      ext2fs_bg_itable_unused(fs, i) ? "" : "\n");
 +              if (ext2fs_bg_itable_unused(fs, i))
                        printf (_(", %u unused inodes\n"),
 -                              fs->group_desc[i].bg_itable_unused);
 +                              ext2fs_bg_itable_unused(fs, i));
                if (block_bitmap) {
                        fputs(_("  Free blocks: "), stdout);
 -                      ext2fs_get_block_bitmap_range(fs->block_map,
 +                      ext2fs_get_block_bitmap_range2(fs->block_map,
                                 blk_itr, block_nbytes << 3, block_bitmap);
-                       print_free (i, block_bitmap,
-                                   fs->super->s_blocks_per_group,
-                                   fs->super->s_first_data_block);
+                       print_free(i, block_bitmap,
+                                  fs->super->s_clusters_per_group,
+                                  fs->super->s_first_data_block,
+                                  EXT2FS_CLUSTER_RATIO(fs));
                        fputc('\n', stdout);
-                       blk_itr += fs->super->s_blocks_per_group;
+                       blk_itr += fs->super->s_clusters_per_group;
                }
                if (inode_bitmap) {
                        fputs(_("  Free inodes: "), stdout);
 -                      ext2fs_get_inode_bitmap_range(fs->inode_map,
 +                      ext2fs_get_inode_bitmap_range2(fs->inode_map,
                                 ino_itr, inode_nbytes << 3, inode_bitmap);
-                       print_free (i, inode_bitmap,
-                                   fs->super->s_inodes_per_group, 1);
+                       print_free(i, inode_bitmap,
+                                  fs->super->s_inodes_per_group, 1, 1);
                        fputc('\n', stdout);
                        ino_itr += fs->super->s_inodes_per_group;
                }
diff --cc misc/mke2fs.c
Simple merge