+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)
=====================================
+ 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
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
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
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++;
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);
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.
* 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"