Whamcloud - gitweb
Merge branch 'maint' into next
authorTheodore Ts'o <tytso@mit.edu>
Tue, 1 Jan 2013 23:50:26 +0000 (18:50 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 1 Jan 2013 23:50:26 +0000 (18:50 -0500)
Conflicts:
RELEASE-NOTES
debian/changelog
lib/ext2fs/crc32c.c
lib/ext2fs/rw_bitmaps.c
resize/resize2fs.c
version.h

21 files changed:
1  2 
RELEASE-NOTES
debian/changelog
debian/e2fslibs.symbols
debugfs/htree.c
e2fsck/pass1.c
e2fsck/problem.c
e2fsck/recovery.c
e2fsck/rehash.c
e2fsck/sigcatcher.c
e2fsck/unix.c
e2fsck/util.c
lib/ext2fs/blkmap64_rb.c
lib/ext2fs/crc32c.c
lib/ext2fs/csum.c
lib/ext2fs/dblist.c
lib/ext2fs/openfs.c
lib/ext2fs/rw_bitmaps.c
misc/mke2fs.c
misc/tune2fs.c
resize/resize2fs.c
version.h

diff --cc RELEASE-NOTES
 +E2fsprogs 1.43-WIP (September 22, 2012)
 +=======================================
 +
 +Add support for the ext4 metadata checksum feature.
 +
 +Check to make sure file system features which can not be supported by
 +HURD are not enabled if the file system is created to be
 +HURD-compatible.
 +
 +
 +Programmer's Notes
 +------------------
 +
 +Reduce the use of libc functions in libext2fs that may not be present
 +in the boot loader environment, at least for those functions that are
 +needed by boot loadsers such as yaboot.
 +
 +Support for the MMP feature can now be disabled at compile time.
 +
 +
+ E2fsprogs 1.42.7 (January 1, 2013)
+ ==================================
+ Add some new options to filefrag from Lustre's patches to e2fsprogs:
+     * add -k option to print extents in kB-sized units (like df -k)
+     * add -b {blocksize} to print extents in blocksize units
+     * add -e option to print extent format, even when FIBMAP is used
+     * add -X option to print extents in hexadecimal format
+ Fix resize2fs so that it can handle off-line resizes of file systems
+ with the flex_bg feature but without a resize_inode (or if we run out
+ of reserved gdt blocks).  This also fixes a problem where if the user
+ creates a filesystem with a restricted number of reserved gdt blocks,
+ an off-line resize which grows the file system could potentially
+ result in file system corruption.
+ Fix a bug in mke2fs where parsing "-E resize=NNN" will result in a
+ mke2fs crash due to a divide-by-zero if the 64bit file system feature
+ is enabled.
+ Add to debugfs the functionality to corrupt a specific file system
+ block via the "zap_block" command.
+ Add to debugfs the functionality to print out a hex dump of a block in
+ the file system via the "block_dump" command.
+ Add to debugfs the functionality to manipulate the extent tree
+ directly via the "extent_open" command.
+ Fix e2fsck so it can detect and fix inconsistencies in the interior
+ nodes of an inode's extent tree.
+ Fix mke2fs's handling of the mmp_update_interval option.  (Addresses
+ Lustre Bug: LU-1888)
+ If e2fsprogs is compiled without --enable-quota, make sure that
+ tune2fs can not turn on the feature for new-style quota support, since
+ afterwards, none of the e2fsprogs tools will be willing to touch that
+ file system.
+ Optimize e2fsck's so that it uses much less CPU for large file
+ systems.  This can result in significant speedups, especially on
+ CPU-constrained systems.  This was primarily done by optimizing
+ libext2fs's bitmap functions.  (Addresses Google Bug: #7534813)
+ Fix debugfs's htree command so that all its messages are sent through
+ the pager.
+ Fixed debugfs's "dump_file" and "cat" functions work correctly
+ on file systems whose block size is greater than 8k.
+ Fix e2freefrag so it works on 64-bit file systems, and so it uses much
+ less memory.  (Addresses Google Bug: 7269948)
+ Programmer's Notes
+ ------------------
+ Fix gcc -Wall nits.
+ Fix a spelling typo in the libext2fs texinfo documentation.
+ Change the output from "make check" so that tools such as emacs's "M-x
+ compile" does not mistake the output as containing a compiler error.
+ Export two new functions from libext2fs: ext2fs_extent_node_split()
+ and ext2fs_extent_goto2().
+ The ext2fs_extents_fix_parents() was fixed so it does not modify the
+ location of the extent handle if its current location is at an
+ interior node, rather than a leaf node of an inode's extent tree.
+ Add a regression test to assure that e2fsck can correctl fix an
+ inconsistent interior node in an inode's extent tree.
+ Fixed the help text in the configure script for --enable-quota.
+ The m68k-specific bitops code has been removed since they were
+ incorrectly treating bit numbers with the high bit set as signed
+ integers.  Furthermore, modern compilers do a good enough job
+ optimizing the generic code there is no point in having the m68k
+ specific asm statements.
+ Fixed how we link the test programs so they always use the static
+ libraries, so that we test using the libraries which we have just
+ built.
  E2fsprogs 1.42.6 (September 21, 2012)
  =====================================
  
@@@ -1,9 -1,31 +1,37 @@@
+ e2fsprogs (1.42.7-1) unstable; urgency=low
+   * New uptream version
+   * Added new options to filefrag to be consistent with the version from
+     Lustre
+   * Fixed a bug in resize2fs which could cause severe file system
+     corruption when growing an ext4 file system which was formatted with
+     fewer-than-normal reserved gdt blocks
+   * Fixed resize2fs to be able to handle off-line resizes of file
+     systems with the flex_bg feature and without any reserved gdt
+     blocks or if the file system did not have the resize_inode feature
+   * Fix a crash while mke2fs is parsing "-E resize=NNN" with the 64bit
+     file system feature enabled
+   * Added the "zap_block", "block_dump", and "extent_open" commands to
+     debugfs
+   * Fixed e2fsck so it detects and fixes inconsistencies in the interior
+     nodes of an inode's extent tree
+   * Fixed mke2fs's handling of the mmp_update_interval option
+   * Optimized e2fsck's CPU utilization
+   * Fixed debugfs's htree command so that all its messages are sent
+     through the pager.
+   * Fixed debugfs's dump_file and cat functions so they work correctly
+     on file systems with a block size greater than 8k.
+   * Fixed e2freefrag so it works on 64-bit file systems, and so it uses
+     much less memory.
+  -- Theodore Y. Ts'o <tytso@mit.edu>  Tue, 1 Jan 2013 10:23:04 -0500
 +e2fsprogs (1.43~WIP-2012-09-22-1) unstable; urgency=low
 +
 +  * Add metadata checksum feature
 +
 + -- Theodore Y. Ts'o <tytso@mit.edu>  Sat, 22 Sep 2012 21:50:20 -0400
 +
  e2fsprogs (1.42.6-1) unstable; urgency=low
  
    * New upstream version
@@@ -156,12 -147,9 +157,13 @@@ libext2fs.so.2 e2fslibs #MINVER
   ext2fs_div_ceil@Base 1.40
   ext2fs_dup_handle@Base 1.37
   ext2fs_expand_dir@Base 1.37
 + ext2fs_ext_attr_block_csum_set@Base 1.43~WIP-2012-08-01
 + ext2fs_ext_attr_block_csum_verify@Base 1.43~WIP-2012-08-01
   ext2fs_ext_attr_hash_entry@Base 1.41.0
 + ext2fs_extent_block_csum_set@Base 1.43~WIP-2012-08-01
 + ext2fs_extent_block_csum_verify@Base 1.43~WIP-2012-08-01
   ext2fs_extent_delete@Base 1.41.0
+  ext2fs_extent_fix_parents@Base 1.42.7
   ext2fs_extent_free@Base 1.41.0
   ext2fs_extent_get@Base 1.41.0
   ext2fs_extent_get_info@Base 1.41.0
diff --cc debugfs/htree.c
Simple merge
diff --cc e2fsck/pass1.c
Simple merge
Simple merge
@@@ -427,13 -359,7 +424,8 @@@ static int do_one_pass(journal_t *journ
        int                     blocktype;
        int                     tag_bytes = journal_tag_bytes(journal);
        __u32                   crc32_sum = ~0; /* Transactional Checksums */
 +      int                     descr_csum_size = 0;
  
-       /* Precompute the maximum metadata descriptors in a descriptor block */
-       int                     MAX_BLOCKS_PER_DESC;
-       MAX_BLOCKS_PER_DESC = ((journal->j_blocksize-sizeof(journal_header_t))
-                              / tag_bytes);
        /*
         * First thing is to establish what we expect to find in the log
         * (in terms of transaction IDs), and where (in terms of log
diff --cc e2fsck/rehash.c
Simple merge
Simple merge
diff --cc e2fsck/unix.c
Simple merge
diff --cc e2fsck/util.c
Simple merge
Simple merge
@@@ -902,15 -1114,15 +902,15 @@@ static int test_crc32c(void
        while (t->length) {
                uint32_t be, le;
                le = ext2fs_crc32c_le(t->crc, test_buf + t->start, t->length);
 -              be = ext2fs_crc32c_be(t->crc, test_buf + t->start, t->length);
 -              if (le != t->crc_le) {
 +              be = ext2fs_crc32_be(t->crc, test_buf + t->start, t->length);
 +              if (le != t->crc32c_le) {
                        printf("Test %d LE fails, %x != %x\n",
-                              (t - test), le, t->crc32c_le);
 -                             (int) (t - test), le, t->crc_le);
++                             (int) (t - test), le, t->crc32c_le);
                        failures++;
                }
 -              if (be != t->crc_be) {
 +              if (be != t->crc32_be) {
                        printf("Test %d BE fails, %x != %x\n",
-                              (t - test), be, t->crc32_be);
 -                             (int) (t - test), be, t->crc_be);
++                             (int) (t - test), be, t->crc32_be);
                        failures++;
                }
                t++;
Simple merge
Simple merge
Simple merge
@@@ -164,8 -153,7 +164,7 @@@ static errcode_t read_bitmaps(ext2_fils
        errcode_t retval;
        int block_nbytes = EXT2_CLUSTERS_PER_GROUP(fs->super) / 8;
        int inode_nbytes = EXT2_INODES_PER_GROUP(fs->super) / 8;
 -      int csum_flag = 0;
 +      int csum_flag;
-       int do_image = fs->flags & EXT2_FLAG_IMAGE_FILE;
        unsigned int    cnt;
        blk64_t blk;
        blk64_t blk_itr = EXT2FS_B2C(fs, fs->super->s_first_data_block);
diff --cc misc/mke2fs.c
Simple merge
diff --cc misc/tune2fs.c
Simple merge
@@@ -743,14 -745,42 +743,42 @@@ static void mark_fs_metablock(ext2_resi
        if (IS_BLOCK_BM(fs, group, blk)) {
                ext2fs_block_bitmap_loc_set(fs, group, 0);
                rfs->needed_blocks++;
-       } else if (IS_INODE_BM(fs, group, blk)) {
+               return;
+       }
+       if (IS_INODE_BM(fs, group, blk)) {
                ext2fs_inode_bitmap_loc_set(fs, group, 0);
                rfs->needed_blocks++;
-       } else if (IS_INODE_TB(fs, group, blk)) {
+               return;
+       }
+       if (IS_INODE_TB(fs, group, blk)) {
                ext2fs_inode_table_loc_set(fs, group, 0);
                rfs->needed_blocks++;
-       } else if (ext2fs_has_group_desc_csum(fs) &&
-                  (ext2fs_bg_flags_test(fs, group, EXT2_BG_BLOCK_UNINIT))) {
+               return;
+       }
+       if (fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_FLEX_BG) {
+               dgrp_t i;
+               for (i=0; i < rfs->old_fs->group_desc_count; i++) {
+                       if (IS_BLOCK_BM(fs, i, blk)) {
+                               ext2fs_block_bitmap_loc_set(fs, i, 0);
+                               rfs->needed_blocks++;
+                               return;
+                       }
+                       if (IS_INODE_BM(fs, i, blk)) {
+                               ext2fs_inode_bitmap_loc_set(fs, i, 0);
+                               rfs->needed_blocks++;
+                               return;
+                       }
+                       if (IS_INODE_TB(fs, i, blk)) {
+                               ext2fs_inode_table_loc_set(fs, i, 0);
+                               rfs->needed_blocks++;
+                               return;
+                       }
+               }
+       }
 -      if (EXT2_HAS_RO_COMPAT_FEATURE(fs->super,
 -                                     EXT4_FEATURE_RO_COMPAT_GDT_CSUM) &&
 -                 (ext2fs_bg_flags_test(fs, group, EXT2_BG_BLOCK_UNINIT))) {
++
++      if (ext2fs_has_group_desc_csum(fs) &&
++          (ext2fs_bg_flags_test(fs, group, EXT2_BG_BLOCK_UNINIT))) {
                /*
                 * If the block bitmap is uninitialized, which means
                 * nothing other than standard metadata in use.
diff --cc version.h
+++ b/version.h
@@@ -7,5 -7,5 +7,5 @@@
   * file may be redistributed under the GNU Public License v2.
   */
  
 -#define E2FSPROGS_VERSION "1.42.7"
 -#define E2FSPROGS_DATE "1-Jan-2013"
 +#define E2FSPROGS_VERSION "1.43-WIP"
- #define E2FSPROGS_DATE "22-Sep-2012"
++#define E2FSPROGS_DATE "1-Dec-2013"