From: Theodore Ts'o Date: Tue, 1 Jan 2013 23:50:26 +0000 (-0500) Subject: Merge branch 'maint' into next X-Git-Tag: v1.43-WIP-2015-05-18~405 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=b9b5e43ea81ecf575e3d96cbf51215aba3746b32;p=tools%2Fe2fsprogs.git Merge branch 'maint' into next Conflicts: RELEASE-NOTES debian/changelog lib/ext2fs/crc32c.c lib/ext2fs/rw_bitmaps.c resize/resize2fs.c version.h --- b9b5e43ea81ecf575e3d96cbf51215aba3746b32 diff --cc RELEASE-NOTES index ace9622,70a8c20..b98eb7a --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@@ -1,23 -1,91 +1,111 @@@ +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) ===================================== diff --cc debian/changelog index 0521c43,76091ca..81ca5b7 --- a/debian/changelog +++ b/debian/changelog @@@ -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 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 Sat, 22 Sep 2012 21:50:20 -0400 + e2fsprogs (1.42.6-1) unstable; urgency=low * New upstream version diff --cc debian/e2fslibs.symbols index 1840a2d,947bafa..87e57d7 --- a/debian/e2fslibs.symbols +++ b/debian/e2fslibs.symbols @@@ -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 e2fsck/recovery.c index 54acb1b,34c9e59..69ed68a --- a/e2fsck/recovery.c +++ b/e2fsck/recovery.c @@@ -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 lib/ext2fs/crc32c.c index 5cb211b,b54fc27..4e72eda --- a/lib/ext2fs/crc32c.c +++ b/lib/ext2fs/crc32c.c @@@ -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++; diff --cc lib/ext2fs/rw_bitmaps.c index 601b8bd,3f3ed65..a885c69 --- a/lib/ext2fs/rw_bitmaps.c +++ b/lib/ext2fs/rw_bitmaps.c @@@ -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 resize/resize2fs.c index 96f515f,092cfbd..56a08c5 --- a/resize/resize2fs.c +++ b/resize/resize2fs.c @@@ -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 index 8873a40,7db9027..3f95951 --- a/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"