• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1E2fsprogs 1.41.14 (December 22, 2010)
2=====================================
3
4Fix spurious complaint in mke2fs where it would complain if the file
5system type "default" is not defined in mke2fs.conf.
6
7The resize2fs program will no longer clear the resize_inode feature
8when the number reserved group descriptor blocks reaches zero.  This
9allows for subsequent shrinks of the file system to work cleanly for
10flex_bg file systems.
11
12The resize2fs program now handles devices which are exactly 16T;
13previously it would give an error saying that the file system was too
14big.
15
16E2fsck (and the libext2fs library) will not use the extended rec_len
17encoding for file systems whose block size is less than 64k, for
18consistency with the kernel.
19
20Programming notes
21-----------------
22
23E2fsprogs 1.41.13 would not compile on big-endian systems.  This has
24been fixed.  (Addresses Sourceforge Bug: #3138115)
25
26The ext2fs_block_iterator2() function passed an incorrect ref_offset
27to its callback function in the case of sparse files.  (Addresses
28Sourceforge Bug: #3081087)
29
30Fix some type-punning warnings generated by newer versions of gcc.
31
32
33E2fsprogs 1.41.13 (December 13, 2010)
34=====================================
35
36E2fsck now supports the extended option "-E journal_only", which
37causes it to only do a journal replay.  This is useful for scripts
38that want to first replay the journal and then check to see if it
39contains errors.
40
41E2fsck will now support UUID= and LABEL= specifiers for the -j option
42(which specifies where to find the external journal).  (Addresses
43Debian Bug #559315)
44
45E2fsck now has support for the problems/<problem code>/force_no
46configuration option in e2fsck.conf, which forces a problem to not be
47fixed.
48
49Dumpe2fs will now avoid printing large negative offsets for the bitmap
50blocks and instead print a message which is a bit more helpful for
51flex_bg file systems.
52
53Mke2fs will now check the file system type (specified with the -t
54option) to make sure it is defined in the mke2fs.conf file; if it is
55not, it will print an error and abort.  If the usage type (specified
56with the -T option) is not defined in mke2fs.conf, mke2fs will print a
57warning but will continue.  (Addresses Debian Bug #594609)
58
59Clarified error message from resize2fs clarifying that on-line
60shrinking is not supported at all.  (Addresses Debian Bug #599786)
61
62Fix an e2fsck bug that could cause a PROGRAMMING BUG error to be
63displayed.  (Addresses Debian Bug #555456)
64
65E2fsck will open the external journal in exclusive mode, to prevent
66the journal from getting truncated while it is in use due to a user
67accidentally trying to run e2fsck on a snapshotted file system volume.
68(Addresses Debian Bug #587531)
69
70Fix a bug in e2fsck so it has the correct test for the EOFBLOCKS_FL
71flag.
72
73The tune2fs program can now set the uninit_bg feature without
74requiring an fsck.
75
76The tune2fs, dumpe2fs, and debugfs programs now support the new ext4
77default mount options settings which were added in 2.6.35.
78
79The e2fsck and dumpe2fs programs now support the new ext4 superblock
80fields which track where and when the first and most recent file
81system errors occurred.  These fields are displayed by dumpe2fs and
82cleared by e2fsck.  These new superblock fields were added in 2.6.36.
83
84Debugfs now uses a more concise format for listing extents in its
85stat command.  This format also includes the interior extent tree
86blocks, which previously was missing from stat's output for
87extent-based files.
88
89Debugfs has a new option, -D, which will request Direct I/O access of
90the file system.
91
92Mke2fs will skip initializing the inode table if a device supports
93discard and the discard operation will result in zero'ed blocks.
94
95Badblocks will now correctly backspace over UTF-8 characters when
96displaying its progress bar.  (Addresses Gentoo Bug #309909; Addresses
97Debian Bugs #583782 and #587834)
98
99E2freefrag will now display the total number of free extents.
100
101Resize2fs -P no longer requires a freshly checked filesystem before
102printing the minimum resize size.
103
104Fixed a floating point precision error in a binary tree search routine
105that can lead to seg fault in e2fsck and resize2fs.
106
107Fixed a bug in e2fsck where if both the original and backup superblock
108are invalid in some way, e2fsck will fail going back to the original
109superblock because it didn't close the backup superblock first, and
110the exclusive open prevented the file system from being reopened.
111
112Fixed a big in e2freefrag which caused getopt parsing to fail on
113architectures with unsigned chars.  (Addresses Gentoo Bug: #299386)
114
115Clarified an mke2fs error message so a missed common in an -E option
116(i.e., mke2fs -t ext4 -E stride=128 stripe-width=512 /dev/sda1")
117results in a more understandable explanation to the user.
118
119Mke2fs now displays the correct valid inode ratio range when
120complaining about an invalid inode ratio specified by the user.
121
122Mke2fs now understands the extended option "discard" and "nodiscard",
123and the older option -K is deprecated.  The default of whether
124discards are enabled by default can be controlled by the mke2fs.conf
125file.
126
127Mke2fs's handling of logical and physical sector sizes has been
128improved to reflect the fact that there will be some SSD's with 8k and
12916k physical sectors arriving soon.  Mke2fs will no longer force block
130size to be the physical sector size, since there will be devices where
131the physical sector size is larger than the system's page size, and
132hence larger than the maximal supported block size.  In addition, if
133the minimal and optimal io size are not exported by the device, and
134the physical sector size is larger than the block size, the physical
135sector size will be used to set the Raid I/O optimization hints in the
136superblock.
137
138E2fsck will now display a better, more specific error message when the
139user enters a typo'ed device name, instead of blathering on about
140alternate superblocks.
141
142Fixed various Debian Packaging Issues
143
144Updated/clarified man pages (Addresses Debian Bugs: #580236, #594004,
145#589345, #591083; Addresses Launchpad Bug: #505719)
146
147Update the Chinese, Chzech, Dutch, French, Germany, Indonesian,
148Polish, Swedish, and Vietnamese translations.
149
150
151Programmer's Notes
152------------------
153
154Fix a dependency definition for the static and profiled blkid
155libraries which could cause compile failures in some configurations.
156(Addresses Debian Bug: #604629)
157
158Add support for Direct I/O in the Unix I/O access layer.
159
160Fixed a memory leak in the Unix I/O layer when changing block sizes.
161
162Fixed minor memory leaks in mke2fs.
163
164Added a new function to the ext2fs library, ext2fs_get_memalign().
165
166The tst_super_size test program will check to make sure the superblock
167fields are correctly aligned and will print them out so they can be
168manually checked for correctness.
169
170Fixed some makefile dependencies for test programs in lib/ext2fs.
171
172Reserved the feature flags and superblock fields needed for the Next3
173snapshot feature.
174
175Reserved the feature flags for EXT4_FEATURE_INCOMPAT_DIRDATA and
176EXT4_INCOMPAT_EA_INODE.
177
178
179E2fsprogs 1.41.12 (May 17, 2010)
180================================
181
182Mke2fs now gives a correct error message if the external journal
183device is not found.  (Addresses Red Hat Bug #572935)
184
185Resize2fs -P will now refuse to print a minimum size if the file
186system is not clean.  Previously it would go ahead and print a minimum
187size anyway, which might not be correct, leading to user confusion.
188
189E2fsck now tests for extents that begin at physical block 0 and
190rejects them as invalid.  (Addresses Google Bug: #2573806)
191
192Fixed a bug in e2fsck which could cause it to crash when trying to
193remove an invalid extent and the block bitmaps hadn't yet been loaded.
194(Addresses SourceForge Bug: #2971800)
195
196E2fsck now will completely skip time-based checks if the system clock
197looks insane or the option broken_system_clock is set in
198/etc/e2fsck.conf.
199
200E2fsck would previously report an i_blocks corruption for a 4T file
201created using posix_fallocate; this bug has been fixed.
202
203E2fsck will now correctly mark a sparse journal as invalid and will
204delete and recreate the journal to address the problem.
205
206E2fsck would previously incorrectly ask the user whether she would
207like to abort the file system check after finding a problem --- and
208then abort regardless of the user's answer.  This is annoying, and
209has been fixed.
210
211E2fsck can now continue even if it fails to recreate the resize
212inode; previously it would just abort the file system check
213altogether.
214
215E2fsck could potentially remove directory entries for inodes found in
216the unused region of the inode table; this would generally happen on
217ext4 file systems that do not use journalling.  This bug has been fixed
218by not clearing these directory entries once it has been established
219that bg_unused_inodes may not be trustworthy; once pass #2 has been
220completed, e2fsck will restart the file system check from the
221beginning, and then it will be safe to delete any directory entries
222pointing to inodes that appear to be deleted.  (Addresses Google Bug:
223#2642165)
224
225E2fsck will not try to set the block group checksums if the user
226cancels the fsck with a control-C.  It's a bad idea to set the
227checksums if e2fsck hasn't been completed, and it often results an the
228error message, "Inode bitmap not loaded while setting block group
229checksum info".  (Addresses Launchpad Bug: #582035)
230
231The mke2fs program now queries the kernel for the physical as well as
232the logical sector size, and will not allow a blocksize below the
233logical, and will strongly encourage a blocksize at least as big as
234the physical blocksize.  This is needed for 4k sector drives that
235emulate 512 byte sector sizes.
236
237Mke2fs will now allow a flex_bg size of 1.  This is unusual, and
238rarely needed, but it is a legal value.
239
240E2fsck will check for cases where the EOFBLOCKS_FL is set when it is
241not needed, and offer to clear it; this is a sign of a kernel bug, but
242more importantly, some released kernels may crash when this situation
243is encountered on ext4 file systems.  (Addresses Google Bug: #2604224)
244
245E2fsck will use the EOFBLOCKS_FL flag exclusively to check whether
246i_size is correct.  (Kernels starting with 2.6.34 will set
247EOFBLOCKS_FL.)
248
249The com_err library will now only output ^M (a CR character) when the
250tty is in raw mode.
251
252Update the Czech, Chinese, Dutch, French, Germany, Indonesian, Polish,
253and Vietnamese translations.
254
255Fixed various Debian packaging issues --- see debian/changelog for
256details.  (Addresses Debian Bugs: #571247, #563487)
257
258
259Programmer's Notes
260------------------
261
262The regression test suite now uses its own mke2fs.conf file, so that
263downstream distributions want change the mke2fs.conf file which is
264distributed in the RPM or dpkg file, without worrying about screwing
265up the regression test results.
266
267Always build namei.o so that building with configure --disable-debugfs
268works correctly.  Long-term, if we care about reduced e2fsprogs
269builds, we need a more general solution for deciding what .o files are
270needed for a particular build.  Given that install floppies are going
271(gone?) the way the dodo bird, we probably don't care, though.
272(Addresses Sourceforge Bug: #2911433)
273
274Add configure options --enable-symlink-build and
275--enable-symlink-install, which allow e2fsprogs be built using
276symlinks instead of hard links, and to be installed using symlinks
277instead of hard links, respectively.  It is useful when the file
278system where the build is taking place, or the file system where
279e2fsprogs is installed, can't handle hard links for some reason.
280(Addresses Sourceforge Bug: #1436294)
281
282Fixed compile warning in mke2fs.c.
283
284
285E2fsprogs 1.41.11 (March 14, 2010)
286==================================
287
288E2fsck will no longer give a fatal error and abort if the physical
289device has been resized beyond 2**32 blocks.  (Addresses Launchpad
290Bug: #521648)
291
292Debugfs has a bug fixed so that "logdump -b <blk>" now properly shows
293the allocation status of the block <blk>.  (Addresses Debian Bug:
294#564084)
295
296E2fsck now prints a much more emphatic and hopefully scary message
297when a file system is detected as mounted while doing a read/write
298check of the filesystem.  Hopefully this will dissuade users from
299thinking, "surely that message doesn't apply to *me*" :-(
300
301E2fsck -n will now always open the file system read-only.  We now
302disallow certain combination of options which previously were manual
303exceptions; this is bad because it causes users to think they are
304smarter than they really are.  So "-n -c", "-n -l", "-n -L", and "-n
305-D" are no longer supported.  (Addresses Launchpad Bug: #537483)
306
307In e2fsprogs 1.41.10, mke2fs would ask for confirmation to proceed if
308it detected a badly aligned partition.  Unfortunately, this broke some
309distribution installation scripts, so it now just prints the warning
310message and proceeds.  (Addresses Red Hat Bug: #569021. Addresses
311Launchpad Bug: #530071)
312
313Mke2fs would take a long time to create very large journal files for
314ext4.  This was caused by a bug in ext2fs_block_iterate2(), which is
315now fixed.
316
317E2fsck now understands the EOFBLOCKS_FL flag which will be used in
3182.6.34 kernels to make e2fsck not complain about blocks deliberately
319fallocated() beyond an inode's i_size.
320
321E2fsprogs 1.41.10 introduced a regression (in commit b71e018) where
322e2fsck -fD can corrupt non-indexed directories when are exists one or
323more file names which alphabetically sort before ".".  This can happen
324with ext2 filesystems or for small directories (take less than a lock)
325which contain filenames that begin with a space or some other
326punctuation mark.  (Addresses Debian Bug: #573923, Addresses Launchpad
327Bug: #525114)
328
329
330Programmer's Notes
331------------------
332
333Add new test, f_rehash_dir, which checks to make sure e2fsck -D works
334correctly.
335
336The libcom_err function now has support for Heimdal's com_right_r
337function().  (Addresses Sourceforge Bug: #2963865, Addresses Debian
338Bug: #558910)
339
340
341E2fsprogs 1.41.10 (February 7, 2010)
342====================================
343
344Fix resize2fs bug which causes it to access invalid memory.
345
346Add libss support for libreadline.so.6.
347
348Fix e2fsck's check for extent-mapped directory with an incorrect file
349type.
350
351Add new e2fsck.conf configuration option, default/broken_system_clock
352to support systems with broken CMOS hardware clocks.  Also, since too
353many distributions seem to have broken virtualization scripts now,
354e2fsck will by default accept dates which are off by up to 24 hours by
355default.  (Addresses Debian Bugs: #559776, #557636)
356
357Fix a bug where mke2fs may not use the best placement of the inode
358table when there is only room for a single block group in the last
359flex_bg.
360
361E2fsck is now smarter when it needs to allocate blocks in the course
362of fixing file system problems.  This reduces the number of spurious
363differences found in pass #5.
364
365E2fsck will no longer rehash directories which fit in a single
366directory block.
367
368E2fsck now correctly handles holes in extent-mapped directories (i.e.,
369sparse directories which use extents).
370
371Fix big-endian problems with ext2fs_bmap() and ext2fs_bmap2().
372
373Fix a bug in filefrag where on platforms which can allow file systems
374with 8k blocks, that it doesn't core dump when it sees a file system
375with 8k block sizes.  (Thanks to Mikulas Patocka for pointing this
376out.)
377
378E2fsck will correctly fix directories that are have an inaccurate
379i_size as well as other problems in a single pass, instead of
380requiring two e2fsck runs before the file system is fully fixed.
381
382Fix e2fsck so it will correctly find and detect duplicate directory
383entries for non-indexed directories.  ( Addresses Sourceforge Bug:
384#2862551)
385
386Mke2fs will use BLKDISCARD to pre-discard all blocks on an SSD or
387thinly-provisioned storage device.  This can be disabled using the -K
388option.
389
390Enhance libext2fs so it works around bug in Linux version 2.6.19
391and earlier where the /proc/swaps file was missing the header on
392the first line.
393
394Fix bug in Linux version 2.6.19 and earlier where the /proc/swaps file
395was missing the header on the first line.
396
397Fix some big-endian bugs in e2fsck and libext2fs.
398
399Fix resize2fs so it works correctly on file systems with external
400journals instead of failing early with the error "Illegal inode
401number".
402
403Fix libss so that it does not seg fault when using a readline library
404which does not supply a readline_shutdown() function.
405
406Updated dumpe2fs's usage message so it correctly gives the right
407arguments summary for "-o superblock=<num>" and "-o blocksize=<num>".
408(Addresses Launchpad Bug: #448099)
409
410Teach libext2fs to ignore the high 32 bits of the i_blocks field
411when huge_file file system feature is set, but the inode does not
412have the HUGE_FILE_FL flag set.
413
414Fix e2fsck's handling of 64-bit i_blocks fields.
415
416E2fsck will now print "Illegal indirect block", "Illegal
417double-indirect block", etc., instead of "Illegal block #-1" or
418"Illegal block #-2", etc.  This makes it easier for users to
419understand what has gone wrong.  (Addresses SourceForge Bug: #2871782)
420
421Mke2fs now will obtain get device topology information from blkid and
422use it to populate the superblock stride and stripe sizes.  It will
423also warn if the block device is misaligned
424
425Fix file descriptor leaks in fsck and debugfs.  (Addresses Novell Bug:
426##524526)
427
428Fix the libext2fs library code to round up the bitmap size to a 4-byte
429boundary, to prevent spurious seg faults caused by the x86
430architecture.  This doesn't affect Linux systems, but was a major
431problem on a number of *BSD systems.  (Addresses Sourceforge Bug:
432#2328708)
433
434Fix resize2fs's minimum size required for a file system so it doesn't
435fail when "resize2fs -M" is run.  (Addresses RedHat Bugzilla: #519131)
436
437Dumpe2fs now prints summary information about the contents of the
438journal.
439
440Avoid printing scary error messages when e2fsck starts running
441problems on low-memory systems, as it tends to panic and mislead the
442user.  (Addresses Debian Bug: #509529)
443
444Fix blkid's modules.dep parser so it handles compressed (.ko.gz)
445modules files.  (Address Red Hat Bug: #518572)
446
447Fix tune2fs so it can add a journal when an extent-enabled file system
448is mounted.  (Addresses Launchpad bug: #416648)
449
450Update Czech, Indonesian, Polish and Vietnamese translations (from the
451Translation Project).
452
453Update/clarify man pages.  (Addresses Sourceforge Bug: #2822186)
454
455Fixed various Debian packaging issues --- see debian/changelog for
456details.  (Addresses Debian Bugs: #540111)
457
458Programmer's Notes
459------------------
460
461The configure script supports the --with-cc, --with-ccopts, and
462--with-ldopts options.  Instead, the more standard use of CC=,
463CCFLAGS=, and LDFLAGS= in the configure command line is used instead.
464Also, --with-ld, which never worked, was also removed.
465(Addresses Sourceforge Bug: #2843248)
466
467The in-tree header files are only used if the in-tree uuid or blkid
468libraries are used.  Otherwise, use the system-provided uuid or blkid
469header files if using the system-provided libraries.
470
471Fix some build failures caused by --disable-* configure options.
472
473Work around a bug in autoconf 2.64.
474
475
476E2fsprogs 1.41.9 (August 22, 2009)
477==================================
478
479Fix a bug in e2fsck routines for reallocating an inode table which
480could cause it to loop forever on an ext4 filesystem with the FLEX_BG
481filesystem feature with a relatively rare (and specific) filesystem
482corruption.  This fix causes e2fsck to try to find space for a new
483portion of the inode table in the containing flex_bg, and if that
484fails, the new portion of the inode table will be allocated in any
485free space available in the filesystem.
486
487Make e2fsck less annoying by only asking for permission to relocate a
488block group's inode table once, instead of for every overlapping
489block.  Similarly, only ask once to recompute the block group
490checksums, instead of once for each corrupted block group's checksum.
491
492Fix filefrag to avoid print the extent header if the FIEMAP ioctl is
493not present, and it needs to fall back to using the FIBMAP ioctl.
494
495Fix filefrag to correctly print the number of extents for zero-length
496files.  (Addresses Debian Bug: #540376)
497
498Filefrag now has a -B option which forces the use of the FIBMAP ioctl
499to more easily debug the FIBMAP code.
500
501Fixed filefrag for non-extent based files.
502
503Add a new program, e2freefrag, which displays information about the
504free space fragmentation in an ext2/3/4 filesystem.
505
506Fix inode resizing via tune2fs -I so that it works correctly in the
507face of non-empty bad blocks inodes, and if the filesystem was
508formatted using the "mke2fs -E stride=N" option for RAID arrays.
509
510Fix regression in ext2fs_extent_set_bmap() caused e2fsck -fD to fail
511and corrupt large directories if the directory needs to shrink by more
512than one block.  (Addresses Debian Bug: #537510)
513
514Fix e2fsck's buggy_init_scritps=1 so that the if the last write and/or
515last mount times are in the future, they are corrected even if
516buggy_init_scripts is set.  This is needed because otherwise resize2fs
517will refuse to resize the filesystem, even after running "e2fsck -f".
518(Addresses Launchpad bug: #373409)
519
520E2fsck will now print much fuller information when the last mount time
521or last written time is in the future, since most people can't seem to
522believe their distribution has buggy init scripts, or they have a
523failed CMOS/RTS clock battery.
524
525Enhance dumpe2fs to dump the extent information via the 'stat'
526command, and more detailed extent information via the new command
527'dump_extents'.
528
529Update French, Polish, Czech, and Swedish translations from the
530Translation Project.
531
532Fixed various Debian packaging issues --- see debian/changelog for
533details.
534
535Programmer's Notes
536------------------
537
538Fixed miscellaneous gcc -Wall warnings.
539
540Fixed memory leak in error path in ext2fs_block_iterate2()
541
542Fixed non-Linux build of the intl directory by adding support for the
543E/Q/V macros.
544
545The bitmap read/write functions now treat uninitialized bitmaps as
546unallocated; this fixes a number of problems in all e2fsprogs for ext4
547filesystems when there is a need to allocate new blocks or inodes, and
548there aren't any free blocks or inodes in the already-used block
549groups.
550
551Improve ext2fs_extent_set_bmap() to avoid creating new extents which
552get inserted into the extent tree when they are not needed.
553
554
555E2fsprogs 1.41.8 (July 11, 2009)
556================================
557
558Fix resize2fs's online resizing, fixing a regression which in
559e2fpsrogs 1.41.7.   (Addresses Debian Bug: #535452)
560
561Fix potential filesystem corruptions caused by using resize2fs to
562shrinking ext4 filesystems with extents enabled.  (Addresses Red Hat
563Bug: #510379)
564
565Optimize uuid_generate() to avoid running uuidd if it is not setuid or
566setgid and the currently running program doesn't have write access to
567the uuidd work directory.
568
569Add safety checks (for non-Linux systems) so that uuidd isn't run with
570file descriptors 0, 1, and 2 closed; and if they are closed, uuidd
571will be careful not to close the file descriptor for its unix domain
572socket when it detaches itself from the controlling tty.  Also add
573safety checks so that if the unix domain socket between the uuid
574library and uuidd program is closed for any reason, both the library
575and the uuidd will return an appropriate error code instead of looping
576in an infinite loop.
577
578The e2croncheck script, which creates an LVM snapshot and then checks
579the ext3/4 filesystem via the LVM snapshot, has been added to the
580contrib directory.
581
582Fix the filefrag program for files that have more than 144 extents.
583
584Update French, Polish, Czech, Indonesian, and Swedish translations from
585the Translation Project.
586
587Fixed various Debian packaging issues --- see debian/changelog for
588details.  (Addresses Debian Bug #535530)
589
590Update/clarify man pages.
591
592Programmer's Notes
593------------------
594
595Fix compilation problem when configured with --disable-uuid.
596
597Don't build uuidgen if configured with --disable-uuid.
598
599Add the new library function ext2fs_test_inode_bitmap_range(), and
600optimized ext2fs_test_block_bitmap_range(), which will be needed for
601future optimizations for e2fsck.
602
603Fix makefile dependencies for libcom_err so that the Makefiles work
604well on non-GNU make program.  (Addresses Sourceforge Patches: #2813809)
605
606Enhance the build system so that the full set of commands executed by
607the Makefiles are displayed, instead of the Linux kernel summary
608output, if the build was configured with --enable-verbose-makecmds, or
609if GNU make is in use and the V variable is non-null, i.e., via "make
610V=1".
611
612
613E2fsprogs 1.41.7 (June 29, 2009)
614================================
615
616Fix a bug in libext2fs which can cause e2fsck and resize2fs to write
617uninitialized data into the portion of the inode beyond the first 128
618bytes when operating on inodes mapped via extents; potentially
619corrupting filesystems.
620
621Fix memory leaks in e2fsprogs, including a very large memory leak
622which can cause e2fsck to run out of memory when checking very large
623filesystems using extents.
624
625The logsave program will now filter out the ^A and ^B characters when
626writing to the console.
627
628Harden ext2fs_validate_entry() so that lsdel will not read beyond the
629end of the block even if the directory block is corrupted.
630
631Fix debugfs from core dumping if the logdump command fails to open the
632output file.
633
634Enhance badblocks to print the currently tested block number when
635interrupted with ^C.
636
637Fix lsattr to exit with a non-zero status when it encounters errors.
638(Addresses RedHat Bugzilla #489841)
639
640Fix e2fsprogs to use the same encoding for rec_len in 64k (and larger)
641filesystems as the kernel when encoding rec_len >= 64k.  For 64k
642filesystems (currently all that is supported by e2fsprogs, this is
643only a minor corner case).
644
645Resize2fs will now update the journal backup fields in the superblock
646if the journal is moved; this avoids an unnecessary full fsck after
647resizing the filesystem.  (Addresses RedHat Bugzilla: #505339)
648
649Fix libext2fs to properly initialize i_extra_size when creating the
650journal and resize inodes.
651
652Change badblocks to allow block sizes larger than 4k.
653
654Fix the filefrag program so it correctly checks for errors from the
655fiemap ioctl.
656
657Update Chinese and Czech translation from the Translation Project.
658
659Clean up various man pages.  (Addresses Debian Bug #531385 and #523063)
660
661
662Programmer's Notes
663------------------
664
665Add --disable-libuuid option to configure which uses an in-system
666installed version of libuuid; the private version is enabled by
667default.
668
669Add --valgrind-leakcheck option to the test_script program which runs
670valgrind with the appropriate options to find memory leaks.
671
672
673E2fsprogs 1.41.6 (May 30, 2009)
674===============================
675
676Fix a critical regression in e2fsck introduced version 1.41.5 which
677can undo updates to the block group descriptors after a journal replay.
678
679If e2fsck receives an I/O error while replaying the journal, prompt
680the user whether they want to ignore the error or not; if e2fsck is
681run in preen mode, force fsck to abort the preen pass.
682
683Fix a bug which would cause e2fsck to core dump if the filesystem
684contains a corrupt extent header, and the user declines to clear the
685inode.  (Addresses Sourceforge Bug: #2791794)
686
687Fix e2fsck to restart only once in the case of multiple block groups
688which inodes in use that are in the uninitialized part of the block
689group's inode table.
690
691To reduce user confusion, if the /etc/mtab file is missing
692ext2fs_check_mount_point and ext2fs_check_if_mounted will return a
693new, explicit error code to indicate this case.  This will cause
694e2fsck to give a clearer error message when the user is using buggy
695rescue CD's that don't properly set up /etc/mtab.  (Addresses Debian
696Bug: #527859)
697
698Fix e2fsck so that if the primary group descriptors are corrupted, but
699the backup superblock is entirely invalid, to go back to using (and
700fixing) the primary group descriptors instead of completely giving up
701on the filesystem.  (Addresses Debian Bug: #516820)
702
703Change e2fsck to not abort a preen pass if an inode is found to have
704i_file_acl_hi non-zero.  Ext3 filesystems don't care, and newer
705kernels (post 2.6.29) will ignore this field.  So let's fix it
706automatically during the preen pass instead of forcing the user to fix
707this up manually.  (Addresses Debian Bug: #526524)
708
709Add resource tracking for e2fsck passes 1b through 1d.
710
711Speed up e2fsck by eliminating unnecessary journal checks if the
712filesystem is already mounted and doesn't need recovery (since the
713kernel would have run the journal when the filesystem was mounted.)
714Also speed up e2fsck by avoiding unnecessary block group descriptor
715updates in ext2fs_close().
716
717Add support to chattr to migrate inodes from using direct/indirect
718blocks to extents.
719
720Avoid corrupting the filesystem if there is an attempt to shrink a
721filesystem using resize2fs smaller than possible by making
722ext2fs_set_bmap() more careful not to delete the old block until the
723new block can be inserted.  In addition, fix a bug in how the minimum
724size of the filesystem (plus a safety margin) is calculated, and
725modify resize2fs to refuse to shrink the filesystem below that minimum
726size without the force flag.
727
728Teach blkid to try to figure out DM device names using take advantage
729of information in sysfs when running on kernels (2.6.29 and later)
730which provide this information in /sys/block/dm-<N>/dm/name; this is
731much faster than scanning for the device number in /dev/mapper.
732
733Fix blkid to prefer /dev/mapper/<name> device names instead of the
734private /dev/dm-X names.
735
736Add an -a option to debugfs's close_filesys command which writes any
737changes to the superblock or block group descriptors to all of the
738backup superblock locations.
739
740Add support to the filefrag program to use the FIEMAP ioctl.
741
742Update Chinese translation from the Translation Project.
743
744Clean up various man pages.  (Addresses Red Hat Bugzilla: #502971 and
745Launchpad Bug: #381854)
746
747Fixed various Debian packaging issues --- see debian/changelog for
748details.  (Addresses Debian Bug #506064)
749
750
751Programmer's Notes
752------------------
753
754Add test code to make sure e2fsck's problem.c doesn't have two problem
755codes assigned to duplicate values.
756
757Avoid using a hard-coded path for /bin/rm in block's test_probe.in.
758(Addresses Sourceforge Bug: #2780205)
759
760Clean up e2fsck by removing #ifdef RESOURCE_TRACK by adding an empty
761function declaration for init_resource_track() and
762print_resource_track() when RESOURCE_TRACK is not defined.
763
764The test code which is used to build the tst_csum program has been
765moved from from tst_csum.c into csum.c under an #ifdef DEBUG to to
766avoid compile problems caused by not having a prototype for
767ext2fs_group_desc_csum().  (Addresses Sourceforge Bug #2484331)
768
769Update the config.guess and config.sub file to the latest from the
770FSF, to allow e2fsprogs to build on the avr32 platform.  (Addresses
771Debian Bug: #528330)
772
773Add a new function, ext2fs_extent_open2(), which behaves like
774pext2fs_extent_open(), but uses the user-supplied inode structure
775when opening an extent instead of reading the inode from disk.
776
777
778E2fsprogs 1.41.5 (April 23, 2009)
779=================================
780
781Fix a number of filesystem corruption bugs in resize2fs when growing
782or shrinking ext4 filesystems off-line (i.e., when the ext4 filesystem
783is not mounted).
784
785Debugfs can now set i_file_acl_high via the set_inodes_field command,
786and print a 64-bit file acl.  This is useful for debugging filesystem
787corruptions where the high bits of i_file_acl_high are set.  E2fsck
788will detect and fix non-zero i_file_acl_high on 32-bit filesystems
789since some Linux kernel versions pay attention to this field even when
790they shouldn't.
791
792Speed up e2fsck when checking clean filesystems by avoiding
793unnecessary block reads, and coalescing the block group descriptor
794blocks so they are read using a single read operation.
795
796The libuuid library will now close all file descriptors before running
797uuidd.  This avoids problems when the calling program has open sockets
798which then never get closed because uuidd is a long-running helper
799daemon.  (Addresses Launchpad bug: #305057)
800
801In order to avoid unnecessary full filesystem checks by e2fsck after
802an on-line resize, e2fsck will ignore the NEEDS_RECOVERY flag set on
803the backup superblocks.  (Addresses Red Hat Bugzilla: #471925)
804
805Mke2fs will avoid trying to create the journal when run in
806superblock-only mode (mke2fs -S), since the left-over journal in the
807inode table will cause mke2fs to fail.
808
809Fix a bug in libext2fs functions that check to see if a particular
810device or filesystem image is mounted, which would cause these
811functions to report that a file identical to the (relative) pathname
812used by a pseudo-filesystem was mounted when in fact it was not.
813
814Update Czech translation from the Translation Project.
815
816Add Chinese (simplified) translation from the Translation Project.
817
818Fix support for external journals (which was broken in e2fsprogs
8191.41.4).
820
821Fix a regression in debugfs where the "stat" command when no
822filesystem was open would cause debugfs to crash with a segmentation
823violation.
824
825Starting in the 2.6.29 linux kernel, the ext4 filesystem driver can be
826used to support filesystems without a journal.  Update the blkid
827library so it understands this.
828
829The blkid library will remove an entry from the blkid cache
830representing the entire disk if partitions are found, since presumably
831the device previously had no partition table, but has now transitioned
832to using a partition table.
833
834Add a check to mke2fs and tune2fs that the argument to the -m option
835(which specifies the reserved ratio) must be greater than zero.
836(Addresses Debian Bug: #517015)
837
838Add support for tracking the number kilobytes written to the
839filesystem via the superblock field s_kbytes_written.  It will be
840updated by the kernel as well as by e2fsprogs programs which write to
841the filesystem.  This is useful for tracking the wear to filesystems
842on Solid State Drives.
843
844Fix compatibility issue in the libext2fs info file and makeinfo
845version 4.12.  (Addresses Red Hat Bugzilla: #481620)
846
847Update/clarify man pages.  (Addresses Debian Bug: #515693, #365619)
848
849Fixed various Debian packaging issues --- see debian/changelog for
850details. (Addresses Debian Bug: #506279)
851
852Programmer's Notes
853------------------
854
855Fix Hurd compilation problem in e2fsck and tune2fs (Addresses Debian
856Bug: #521602)
857
858Fix various gcc compilation warnings and other programming cleanups.
859(Addresses Red Hat Bugzilla: #486997)
860
861Add support for building the blkid command statically.
862
863Add support for disabling the built-in blkid library in favor of a
864system-installed blkid implementation via the configure option
865--disable-libblkid.
866
867
868E2fsprogs 1.41.4 (January 27, 2009)
869===================================
870
871Fixed a bug which could sometimes cause blkid to return an exit value
872of zero for a non-existent device (Addresses Debian Bug: #502541)
873
874Blkid will now recognize ext3 filesystems that have the test_fs flag
875set as ext3 filesystems.
876
877The blkid library will now recognize btrfs filesystems and swap
878devices currently used by user-level software suspend.
879
880Tune2fs now updates the block group checksums when changing the UUID
881to avoid causing e2fsck to complain vociferously at the next reboot.
882
883Tune2fs's inode size resizing algorithms have been fixed so it is not
884vastly inefficient for moderate-to-large filesystems, due to some
885O(n**2) and O(n*m) algorithms that didn't scale well at all.
886
887Fix tune2fs's inode resizing algorithm so it will not corrupt
888filesystems laid out for RAID filesystems; in addition, tune2fs will
889refuse to change the inode size for filesystems that have the flex_bg
890feature enabled.  (This is a limitation in the current implementation
891of tune2fs -I.)
892
893E2fsprogs 1.41 broke debugfs's logdump command for normal ext3/4
894filesystems with 32-bit block numbers, when the headers for 64-bit
895block numbers was added.  This regression has been fixed.
896
897Debugfs's ncheck command has been fixed to avoid printing garbage
898characters at the end of file names.
899
900Fix resize2fs for ext4 filesystems.  Some blocks that that need moving
901when shrinking filesystems with uninit_bg feature would not be moved.
902In addition, blocks and inode table blocks were not being correctly
903freed when shrinking filesystems with the flex_bg feable, which caused
904resize2fs -M to fail.  Finally, when blocks are moved, make sure the
905uninitialized flag in extents is preserved.
906
907Fix bug which caused dumpe2fs to abort with an error if run on a
908filesystem that contained an external journal.
909
910Some distributions used "mke3fs" as an alias for "mkfs.ext3"; check
911for this in argv[0] to provide better legacy support for these
912distributions.  This is a practice that should NOT be continued,
913however.
914
915Mke2fs now has a new option -U, which allows the user to specify the
916UUID that should be used for the new filesystem.
917
918Mke2fs will treat devices that are exactly 16TB as if they were 16TB
919minus one block.  This allows users who have read that ext3 supports
920up to 16TB filesystems and who create a 16TB LVM to not get confused,
921since the true limit is really 16TB minus one block.
922
923E2fsck will no longer abort an fsck run if block group has an errant
924INODE_UNINIT flag.
925
926E2fsck now distinguishes between fragmented directories and fragmented
927files in verbose mode statistics and in the fragcheck report.
928
929Fix a bug in e2fsck which caused it double count non-contiguous
930extent-based inodes.
931
932E2fsck will leave some slack space when repacking directories to allow
933room for a few directory entries to be added without causing leaf
934nodes to be split right away.
935
936Fix a bug which caused e2fsck to crash when it comes across a
937corrupted interior node in an extent tree with the error message:
938"Error1: Corrupt extent header on inode XXXXXX"
939
940E2fsck problem descriptions involving the journal are no longer
941referred to as "ext3" problems, since ext4 filesystems also have
942journals.
943
944Fix a long-standing bug in e2fsck which would cause it to crash when
945replying journals for filesystems with block sizes greater than 8k.
946
947Update Catalan translation from the Translation Project.
948
949Fixed various Debian packaging issues --- see debian/changelog for
950details. (Addresses Debian Bugs: #503057, #502323, #511207)
951
952Programmer's Notes
953------------------
954
955Fix build of e2fsck.profiled, and add support for building profiled
956binaries in the misc directory if configured with --enable-profile.
957
958The ext2fs_open() function now performs more sanity checks on the
959superblock to avoid potential divide by zero errors by other parts of
960library.
961
962The ext2fs_read_inode_full() function now has a safety check to avoid
963a segmentation fault on corrupted filesystems.
964
965The ext2fs_new_inode() function now has a sanity check so that if the
966s_first_inode field in the superblock is insane, it will return
967EXT2_ET_INODE_ALLOC_FAIL instead of returning an invalid inode number.
968
969To avoid segmentation faults, ext2fs_block_alloc_stats() and
970ext2fs_inode_alloc_stats() now validates the passed inode or block
971number to avoid overrunning an array boundary.
972
973Various signed/unsigned errors for variables containing block numbers
974have been fixed.
975
976Accommodations for gcc's stupidity in not realizing that constant
977strings that do not contain a '%' character are safe to use in format
978strings have been made so that distributions that want to compile
979e2fsprogs with -Werror=format-security have an easier time doing so.
980
981Added a new 64-bit getsize interface, ext2fs_get_device_size2().
982
983Added the utility make-sparse.c to the contrib directory.
984
985The ext2fs_block_iterate2() function now reflects errors from
986ext2fs_extent_set_bmap() to the caller, if the callback tries to
987change a block on an extent-based file, and ext2fs_extent_set_bmap()
988fails for some reason (for example, there isn't enough disk space to
989split a node and expand the extent tree.
990
991The ext2fs_block_iterate2() function will preserve the uninit flag in
992extents when the callback function modifies a block in an extent-based
993file.
994
995E2fsck will now flag filesystems that have an insane s_first_ino field
996in their superblock, and attempt to use a backup superblock to repair
997the filesystem.
998
999
1000E2fsprogs 1.41.3 (October 12, 2008)
1001===================================
1002
1003E2fsck has been fixed so it prints the correct inode number for
1004uinit_bg related problems.
1005
1006E2fsck will now offer to clear the test_fs flag if the ext4 filesystem
1007is available on linux.  This can be disabled via a configuration
1008option in /etc/e2fsck.conf.
1009
1010Fix a file descriptor leak in libblkid when checking to see if an ext4
1011or ext4dev module exists.
1012
1013Fix a bug in e2fsck where in preen mode, if there are disk I/O errors
1014while trying to close a filesystem can lead to infinite loops.
1015(Addresses Red Hat Bugzilla #465679)
1016
1017Fix a bug in resize2fs where passing in a bogus new size of 0 blocks
1018will cause resize2fs to drop into an infinite loop.  (Addresses Red
1019Hat Bugzilla: #465984)
1020
1021Add a check in the Unix I/O functions in libext2fs so that when a
1022device is opened read/write, return an error if the device is
1023read-only using the BLKROGET ioctl.
1024
1025Fix debugfs's ncheck command so that it prints all of the names of
1026hardlinks in the same directory.
1027
1028Fix a bug in libblkid so it correctly detects whether the ext4 and
1029ext4dev filesystems are available, so that the ext4dev->ext4
1030fallback code works correctly.
1031
1032Programmer's Notes
1033------------------
1034
1035Fix a parallel build problem by making sure util/subst is built before
1036trying to build the lib/et directory.  (Addresses Sourceforge Bug:
1037#2143281)
1038
1039Updated "make depend" information for crc16.o
1040
1041
1042E2fsprogs 1.41.2 (October 2, 2008)
1043==================================
1044
1045Fix e2fsck's automatic blocksize detection.  This fixes a regression
1046from e2fsprogs 1.40.7 which caused e2fsck to fail if the user
1047specifies a block number using the -b option if the blocksize option
1048isn't also specified using -B.  Unfortunately, users very commonly
1049invoke e2fsck using "e2fsck -b 32768 /dev/hdXXX" to use the backup
1050superblock; in fact e2fsck will often suggest this kind of command
1051line.  Oops.
1052
1053Enhance the debugfs's "ncheck" command so it will print all of the
1054pathnames for the specified inodes.  (Previously, in some cases ncheck
1055might not print a pathname for an inode at all if some of the other
1056inodes had multiple hard links.)
1057
1058Enhance debugfs's "hash" command so the hash seed can be specified via
1059a command-line option.  In addition, allow the hash algorithm to be
1060specified by name instead of just by number.
1061
1062Fix e2fsck so that we don't accidentally print the translation file's
1063header when asking the user a custom question so there is no prompt
1064defined for a particular problem record.  For example, the question
1065"Run journal anyway" will get the PO header tacked on because e2fsck
1066erroneously passed the null string to _().  (Addresses Launchpad Bug:
1067#246892)
1068
1069Enhance badblocks so that it can test a normal file which is greater
1070than 2GB.
1071
1072Enhance the badblocks command so that it displays the time and
1073percentage complete when in verbose mode.  (Addresses Debian Bug:
1074#429739)
1075
1076Fix a potential memory leak in a error handling path in debugfs's
1077ncheck function.
1078
1079Fix a potential memory corruption problem if a memory allocation fails
1080in resize2fs.
1081
1082Fix the usage message for debugfs's logdump command to be consistent
1083with its man manpage.
1084
1085Update Polish, French, Vietnamese, Dutch, Indonesian, German, Czech,
1086and Swedish translations from the Translation Project.
1087
1088Add documentation for the file I/O functions to the libext2fs.texinfo
1089file.  (Addresses Debian Bug: #484877)
1090
1091Update and clarified various man pages.  (Addresses Launchpad Bug
1092#275272; Addresses Debian Bugs: #498100, #498101, #498102, #498103)
1093
1094Fixed various Debian packaging issues --- see debian/changelog for
1095details. (Addresses Debian Bug: #497619)
1096
1097Programmer's Notes
1098------------------
1099
1100Fix a potential file descriptor leak in libcom_err by setting the
1101close-on-exec flag for a fd used for debugging.  (Addresses Red Hat
1102Bugzilla #464689)
1103
1104Fix a potential race in libcom_err by using sem_post/sem_init.  SuSE
1105has been carrying a patch for a long time to prevent a largely
1106theoretical race condition if a multi-threaded application adds and
1107removes error tables in multiple threads.  Unfortunately SuSE's
1108approach breaks compatibility by forcing applications to link and
1109compile with the -pthread option; using pthread mutexes has
1110historically been problematic.  We fix this by using sem_post/sem_init
1111instead.
1112
1113Fix e2fsprogs-libs build failure due to 'subs' target.  (Addresses
1114Sourceforge Bug: #2087502)
1115
1116Avoid linking e2initrd_helper, debugfs, blkid, and fsck with unneeded
1117libraries when using ELF shared libraries.
1118
1119Fix ELF shared library when building on systems that don't already
1120have the e2fsprogs shared libraries already installed.  (Addresses
1121Sourceforge Bug: #2088537)
1122
1123Fix the pkg-config files so they work correctly when linking with
1124static libraries and fix the include directory so programs don't have
1125to use #include <ext2fs/ext2fs.h>, but can use #include <ext2fs.h>
1126instead.  (Addresses Sourceforge Bug: #2089537)
1127
1128Make sure ext2fs_swab64() is compiled for all platforms, and not just
1129for x86.  (Addresses Debian Bug: #497515)
1130
1131Remove the unused ext2fs_find_{first,ext}_bit_set() functions for all
1132non-x86 platforms.  (They had been removed for x86 earlier.)
1133
1134Fix diet libc compilation support, which had bitrotted due to lack of
1135TLC.  Fixing this improves general portability.
1136
1137When installing the link library when using ELF shared libraries,
1138avoid using absolute pathnames if the link library and the shared
1139library are installed in the same directory.  (Addresses Sourceforge
1140Bug: #1782913)
1141
1142Fix gen-tarball so it will work even if the top-level directory has
1143been renamed to something other than "e2fsprogs".  Also make
1144gen-tarball print the size of the resulting tar.gz file.
1145
1146
1147E2fsprogs 1.41.1 (September 1, 2008)
1148====================================
1149
1150Many people are forgetting to update their mke2fs.conf file, and this
1151causes ext3, ext4, and ext4dev filesystems won't get created with the
1152proper features enabled.  We address this in two ways.  First, mke2fs
1153will issue a warning if there is not definition for an ext3, ext4, or
1154ext4dev filesystem and the user is trying to create such a filesystem
1155type.  Secondly, when installing from a source build, "make install"
1156will provide basic configuration file handling for /etc/mke2fs.conf.
1157If it exists, and does not mention ext4dev, it will be moved aside to
1158/etc/mke2fs.conf.e2fpsrogs-old and the new /etc/mke2fs.conf file will
1159be installed.  If the existing /etc/mke2fs.conf file does mention
1160ext4dev, then "make install" will install official mke2fs.conf file as
1161/etc/mke2fs.conf.e2fsprogs-new and issue a message to the user that
1162they should look to see if any changes need to be merged.
1163
1164The mke2fs program will now create the journal in the middle of the
1165filesystem, since this minimizes seek times on average for fsync-heavy
1166workloads.  In addition, mke2fs will now create journals using extents
1167for filesystems that support them.  This results in a more efficient
1168encoding for the journal since it eliminates the need for using
1169indirect blocks.
1170
1171The mke2fs program will avoid allocating an extra block to the
1172journal.  (Addresses Sourceforge Bug: #1483791)
1173
1174Mke2fs will correctly enforce the prohibition against features
1175(specifically read-only features) in revision 0 filesystems.  (Thanks
1176to Benno Schulenberg for noticing this problem.)
1177
1178Mke2fs previously would occasionally create some slightly non-optimally
1179placed inode tables; this bug has been fixed.
1180
1181The mke2fs and tune2fs programs now print the correct usage message
1182describing the maximum journal size.  (Addresses Debian Bug: #491620)
1183
1184Add support for setting the default hash algorithm used in b-tree
1185directories in tune2fs (from a command-line option) or mke2fs (via
1186mke2fs.conf).  In addition, change the default hash algorithm to
1187half_md4, since it is faster and better.
1188
1189The blkid library will now recognize MacOS hfsx filesystems, and
1190correctly extract the label and uuid for hfs, hfsx, and hfsplus
1191filesystems.  (Addresses Sourceforge Feature Requests: #2060292)
1192
1193The blkid library has improved detection of JFS and HPFS filesystems.
1194(Addresses Launchpad Bug: #255255)
1195
1196The blkid library is now much more efficiently handling devicemapper
1197devices, mainly by no longer using the devicemapper library.  This can
1198speed up access for systems with a large number of device mapper
1199devices.
1200
1201Blkid had a number of cache validation bugs in libblkid that have been
1202fixed.   (Addresses Debian Bug: #493216)
1203
1204Resize2fs will now properly close out the "updating inode references"
1205progress bar so there is a newline printed before printing the final
1206"resize is successful" message.
1207
1208Resize2fs will now correctly handle filesystems with extents and/o
1209uninitialized block groups correctly when file/directory blocks need
1210to relocated (i.e., when shrinking a filesystem or if the resize_inode
1211is not present).  To support this, the ext2fs library now supports
1212initializing inode and block bitmaps that are not yet initialized when
1213allocating them using ext2fs_new_block() and ext2fs_new_inode().  In
1214addition, e2fs_block_iterate2() can now support changing the location
1215of interior nodes of an extent tree, and ext2fs_extent_set_bmap() has
1216been optimized to avoid creating unnecessary new extents when updating
1217the location of blocks in the extent tree.  This will also help out
1218e2fsck's recovery of obscurely corrupted filesystems with extents,
1219when blocks are claimed by multiple inodes.
1220
1221Add support for on-line resizing ext4 filesystem with the flex_bg
1222filesystem feature.  The method for doing so is not optimal, but to do
1223a better job will require kernel support.
1224
1225E2fsprogs 1.41.0 introduced a bug in libext2fs which caused e2image and
1226debugfs programs to not be able to read e2image files; the signed
1227vs. unsigned bug in the code which read bitmaps from the e2image has
1228been fixed.   (Addresses Debian Bug: #495830)
1229
1230Resize2fs is now correctly managing the directory in-use counts when
1231shrinking filesystems and directory inodes needed to be moved from one
1232block group to another.  This bug has been around since e2fsprogs
12331.26, and is largely harmless, but does cause a filesystem corruption
1234which will be flagged by e2fsck after the filesystem has been shrunk.
1235
1236E2fsck will no longer issue spurious complaints about the inode size
1237caused by very large extent-based files, and by blocks reallocated
1238using fallocate() with the FALLOC_FL_KEEP_SIZE option.  (Addresses
1239Kernel Bugzilla: #11341)
1240
1241Mke2fs will now set the creation timestamp on the lost+found directory
1242and the root directory.  (More generally, all new inodes created using
1243the ext2fs library will correctly set the creation timestamp.)
1244
1245E2fsck now correctly calculates ind/dind/tind statistics in the
1246presence of extent-based files.  In addition, "e2fsck -v" will report
1247statistics of the depth of extent trees in the filesystem.  E2fsck can
1248also give an inode fragmentation report using "e2fsck -E fragcheck"
1249which can be useful when debugging the kernel block allocation
1250routines.
1251
1252Fix support for empty directory blocks in ext4 filesystems with 64k
1253blocksize filesystems.
1254
1255E2fsck will now print the depth of corrupt htree directories.
1256
1257Debugfs's htree command now correctly understands extent-based
1258directories.  It will also print out the minor hash as well as the
1259major hash.
1260
1261Debugfs has a new command which will print the supported features of
1262e2fsprogs, to enable scripts to know whether the installed version of
1263e2fsprogs can support a specific feature.
1264
1265Debugfs will now write files using extents for filesystems that
1266support them.
1267
1268The error message printed by "tune2fs -I" if the inode size was too
1269small was rather confusing, so it has been improved.  Also, we won't
1270try to create an undo log until we know that command-line-specified
1271parameters such as "tune2fs -I <inode size>" are valid.
1272
1273Given some filesystems found "in the wild" that had non-zero block
1274group checksums even though the uninit_bg/gdt_sum feature was not
1275enabled, e2fsck would issue spurious error messages.  Teach
1276ext2fs_group_desc_csum_verify() to ignore the block group checksum
1277entirely if the feature flag is not set.  (Addresses Debian Bug:
1278#490637)
1279
1280The blkid program will now print out a user-friendly listing of all of
1281the block devices in the system and what they contain when given the
1282-L option.  (Addresses Debian Bug: #490527)
1283
1284The filefrag program now has a more accurate calculation for the
1285number of ideal extents.  (Addresses Debian Bug: #458306)
1286
1287The test I/O manager is now enabled by default, but its overhead is
1288only incurred when it would be enabled via the TEST_IO_FLAGS or
1289TEST_IO_BLOCK environment variables.
1290
1291Typographical errors in various program strings and usage messages
1292have been fixed; most of these were pointed out by the e2fsprogs
1293message catalog translators.  (Thanks, translators!)
1294
1295Update and clarified various man pages, as well as some typographical
1296errors in the libext2fs texinfo file.
1297
1298Fixed various Debian packaging issues --- see debian/changelog for
1299details.
1300
1301Add Indonesian and update French, Polish, Dutch, German, Swedish,
1302Czech, and Vietnamese Translations.  (Addresses Debian Bugs: #313697,
1303#401092)
1304
1305Programmer's Notes
1306------------------
1307
1308Fix portability problem with the badblocks group; for systems that
1309don't have nanosleep(), try using usleep() instead.
1310
1311The "make check" target in the e2fsck directory now sets
1312LD_LIBRARY_PATH before running the various e2fsck internal library
1313regression tests.
1314
1315The crc32 regression test in the e2fsck library is now portable to
1316greater variety of environments, including big-endian systems and
1317when cross-building e2fsprogs for embedded systems.  (Addresses
1318Sourceforge Bug: #2019287)
1319
1320The ext2fs_extent_set_bmap() had some bugs when setting the first
1321block in a file, or when replacing a single block extent.  Those cases
1322fortunately were came up relatively rarely when e2fsck was checking
1323files, but caused some problems when resize2fs was shrinking
1324extent-based files.
1325
1326Fix a potential core-dumping bug in libe2p's iterate_on_dir()
1327function.
1328
1329Various ext2fs library functions --- ext2fs_block_iterate2(),
1330ext2fs_initialize() and ext2fs_extent_open() --- now correctly free
1331allocated memory to avoid memory leaks in all of their error return
1332paths.
1333
1334Ext2ed was failing to build because masix support had been removed in
1335the rest of e2fsprogs, so ext2ed no longer has masix support, either.
1336
1337The configure script now respects the LDFLAGS environment variable if
1338it is set when configure is called.  (Addresses Sourceforge Feature
1339Request: #1937287)
1340
1341Libuuid is now more portable to the Windows platform.  (Addresses
1342Sourceforge Feature Request: #1937287)
1343
1344The configure script now uses AC_MSG_{RESULT,WARN,ERROR} instead of
1345bare echo commands so that configure flags such as --quiet work
1346correctly.  (Addresses Sourceforge Patches: #2058794)
1347
1348A few uses of sprintf have been removed from the ext2fs library to
1349make life easier for bootloaders with a limited libc environment.
1350(Addresses Sourceforge Bug: #2049120)
1351
1352The ext2fs_read_inode() checks the validity of the inode number passed
1353to it earlier, to avoid doing some needless work when it would fail
1354anyway.
1355
1356The ext2fs_open() checks the validity of the blocksize parameter
1357passed to it earlier, to avoid doing some needless work when it would
1358fail anyway.
1359
1360Disable a very annoying automatic "%.sh -> %" GNU make rule in the
1361top-level Makefile.  That automatic rule is used to better support
1362SCCS, but it caused problems for a particular niche distribution which
1363likes to use configure.sh files to store the configure options used to
1364build a package.  Unfortunately GNU make will use the configure.sh to
1365replace the configure script, resulting in a self-inflicted fork bomb
1366leading to an out-of-memory crash.
1367
1368To support old GNU C compilers don't use C99/C++ comments, but only
1369K&R style comments, and don't try to use __builtin_expect if __GNUC__
1370is less than 3.  (__builtin_expect is only supported for gcc versions
13712.96 and up, and it's tricky to check for gcc 2.95 vs gcc 2.96; since
1372this is an optimization, we only try to use __builtin_expect for gcc 3
1373and up.)
1374
1375In e2fsck's crc routines, make sure we use WORDS_BIGENDIAN instead of
1376__LITTLE_ENDIAN, which are only defined by glibc's header files and
1377hence isn't portable.
1378
1379For the convenience for some distributions that need a static tune2fs,
1380the Makefile for misc/ now has a tune2fs.static target.
1381
1382The ext2fs_block_iterate2() function now supports BLOCK_FLAG_APPEND
1383for extent-based files
1384
1385The ext2fs_bmap() function now supports BMAP_ALLOC for extent-based
1386files.
1387
1388All source files no longer have any trailing white space.
1389
1390The io_channel_read_blk64() and io_channel_write_blk64() functions are
1391now functions instead of C preprocessor macros to provide better
1392forward compatibility.
1393
1394The e2fpsrogs translation template now expands the @x abbreviation.
1395
1396Various namespace leakages in libblkid, libe2p, and libext2fs have
1397been fixed.
1398
1399Fix a parallel build problem in e2fsprogs.
1400
1401E2fsprogs is now more portable to Solaris.
1402  * blkid no longer assumes that the TIOCGSIZE and TIOCGWINSZ ioctl's
1403    are always present.
1404  * Scripts do not assume that /bin/true is always in /bin
1405  * Don't use __FUNCTION__ since Solaris's C99 doesn't support it.
1406  * Flush stdio handles before calling setbuf(), since Solaris will
1407    discard any pending output to the stream.
1408  * Define _XOPEN_SOURCE to 600 since Solaris's header files are very
1409    picky about which C compiler can be used for SUSv3 conformance.
1410    Use of C99 is not compatible with SUSv2 (_XOPEN_SOURCE=500),
1411    and C89 is not compatible with SUSv3 (_XOPEN_SOURCE=600).
1412    Since we need some SUSv3 functions, consistently use SUSv3 so
1413    that e2fsprogs will build on Solaris using c99.
1414  * Solaris C99 does not support varargs C preprocessor macros
1415  * Solaris header files pollute the C namespace if in/netinet.h
1416    is included, which conflicts with e2fsprogs' use of the kmem_cache_t
1417    typedef.
1418  * Solaris ships with a pathetically ancient shell in /bin/sh so we
1419    avoid the use of various more advanced shell constructs such as $().
1420
1421The "make rpm" command will now take some extra configure options from
1422the build environment without needing to patch the source tree.
1423
1424The ext2fs_add_dir_block() function will now grow the dblist more
1425aggressively as an optimization to avoid copying the array too often.
1426
1427The e2fsck_write_bitmaps() will write the block and inode bitmaps
1428together instead of in two passes.
1429
1430
1431E2fsprogs 1.41 (July 10, 2008)
1432==============================
1433
1434Add support for ext4 filesystem features, in particular extents,
1435uninit_bg, flex_bg, huge_file, and dir_nlink features.  Also add
1436support for checking journal checksums.  Debugfs will print new
1437superblock and inode fields that were defined for ext4.  For example,
1438the nanosecond and i_version fields of an inode, and the
1439s_min_extra_isize and s_wanted_extra_isize fields from the superblock.
1440Note: Resize2fs doesn't currently support the combination of flex_bg
1441and !resize_inode.  (Addresses Debian Bug: #388452, #425477)
1442
1443Tune2fs can support migrating a filesystem from using 128 byte inodes
1444to 256 byte inodes, so it can take advantage of the full features of
1445ext4.
1446
1447Add support for "undo" support.  E2fsck and mke2fs can optionally
1448record an undo log which can replayed by the program e2undo.
1449
1450E2fsck could damage a filesystem by trying to relocate inode tables
1451due to corrupted block group descriptors, where the attempted inode
1452table relocation would do far more harm than good.  E2fsck has been
1453fixed to detect this these sorts of corrupted block group descriptors
1454much earlier in e2fsck processing, so it can try to use the backup
1455superblock and block group descriptors first.  This should be a much
1456better strategy for recovering these types of corrupted filesystems.
1457(Addresses Sourceforge Bug: #1840291)
1458
1459E2fsck will display a more understandable message when the last check
1460field in the superblock is in the future.  (Addresses Debian Bug:
1461#446005).
1462
1463E2fsck now performs more extensive and careful checks of extended
1464attributes stored in the inode.
1465
1466Enhance mke2fs to print a more explanatory error message when
1467ext2fs_get_device_size() returns EFBIG.  (Addresses Debian Bug:
1468#488663)
1469
1470Fix mke2fs to use a default block size of 4k when formatting an
1471external journal device.  This is done by using a fixed filesystem
1472type list that consists only of the single filesystem type "journal"
1473when looking up configuration keys in /etc/mke2fs.conf.  (Addresses
1474Debian Bug: #488663)
1475
1476Speed up how mke2fs writes the journal data blocks by writing the disk
1477blocks in larger chunks.
1478
1479Fix blkid handling of stale devices.  Fix a bug which could cause a
1480core dump while garbage collecting the blkid cache, and assure that
1481blkid_find_dev_with_tag() never returns a non-existent device.  Also,
1482if a filesystem is found at a new /dev location, eliminate any
1483duplicate stale entries which can not be verified.
1484(Addresses Debian Bugs: #487758, #487783)
1485
1486Add more paranoid checks for LVM volumes and swap partitions in
1487blkid's probe function, to reduce the chances of false positives.
1488
1489The mke2fs program now has a much more sophisticated system for
1490controlling configuration parameters of a newly created filesystem
1491based on a split filesystem and usage type system.  The -t option to
1492mke2fs was a deprecated alias to -c; it now specifies a filesystem
1493type (ext2, ext3, ext4, etc.), while the -T option can now be a comma
1494separated usage list.  The filesystem type information and type
1495information is used to extract configuration parameters from the
1496/etc/mke2fs.conf file.
1497
1498The mke2fs program will no longer complain and request the -f option
1499when the user tries to create a filesystem with greater than 2**31
1500blocks.
1501
1502When creating a filesystem for the GNU Hurd use a fs-type of Hurd and
1503adjust the mke2fs.conf file so filesystems for the Hurd are created
1504with a blocksize of 4096 and inode size of 128, which is all it knows
1505how to handle.  (Addresses Debian Bug: #471977)
1506
1507Mke2fs will always make sure that lost+found always has at least 2
1508blocks, even for filesystems with very large blocksizes (i.e., 64kb).
1509
1510Resize2fs will now print the minimum needed filesystem size if given
1511the -P option, and will resize the filesystem to the smallest possible
1512size if given the -M option.
1513
1514Fix resize2fs to clean up the resize_inode if all of the reserved gdt
1515blocks are consumed during an off-line resize.
1516
1517The "ls" command in debugfs now supports the -p option, which causes
1518it to quote the filenames so that spaces or tabs in directory entries
1519are easily visible.  (Addresses Red Hat Bugzilla: #149480; Addresses
1520Sourceforge Feature Request: #1201667)
1521
1522Fix a potential off-by-one buffer overflow in the fs_device_name in an
1523e2image file.
1524
1525The chattr program will return a non-zero exit code in case of
1526failures, and error messages can be suppressed with the -f option.
1527(Addresses Red Hat Bugzilla: #180596)
1528
1529Fix a bug in badblocks which caused it to overrun an array and likely
1530crash if more than 8 test patterns are specified using the -t option.
1531(Addresses Debian Bug: #487298)
1532
1533Add support to badblocks to limit how quickly it reads from the disk
1534drive (so it can be used for background scrubbing), and so it will
1535abort after finding a given number of errors.
1536
1537Remove support for the legacy big-endian filesystem format which only
1538existed on extremely long-dead PowerPC kernels almost a decade ago.
1539
1540Remove MASIX support from e2fsprogs.
1541
1542Add I/O statistics reporting to e2fsck.
1543
1544Update Vietnamese, Polish, French, Spanish, German, Catalan, Dutch,
1545Czech translations.
1546
1547Fixed various Debian packaging issues --- see debian/changelog for
1548details.  (Addresses Debian Bugs: #487443, #487675, #490003)
1549
1550Fixed spelling mistakes, typos, and otherwise clarified man pages.
1551(Addresses Debian Bugs: #393313, #487849, #440983, #440981)
1552
1553Programmer's Notes
1554------------------
1555
1556Factor out bitmap code in preparation for adding 64-bit new-style
1557bitmaps.
1558
1559Fix gcc -Wall warnings
1560
1561Fix the pkg-config files so that private libraries are specified in
1562"Libs.private:".
1563
1564Fix the libext2fs.texinfo manual so it builds with modern versions of
1565texinfo.
1566
1567Silence the makefile from showing the awk command used to build the
1568
1569Clean up the badblocks group so to make it more portable and robust.
1570
1571Avoid using predictable filenames in /tmp in blkid's regression test
1572suite.  Also remove bashism's in the regression test script.
1573
1574If the configure script is given --with-diet-libc, don't use thread
1575local storage, since diet libc doesn't support TLS.  (Addresses
1576Sourceforge Bug: #2000654)
1577
1578Fix the blkid regression test suite to tolerate older versions of
1579mkswap that don't support the -U option.
1580
1581A few library routines have been converted to support 64-bit block
1582numbers; in particular, the I/O manager functions, the test_io,
1583inode_io, and unix_io managers have all be converted to support 64-bit
1584operation.
1585
1586Debugfs can now be extended for use by test programs.  See
1587lib/ext2fs/extents.c for an example for how it can be used.  The test
1588program links against the debugfs object files, and provides
1589additional commands by defining an auxiliary libss command table.
1590
1591The lazy_bg filesystem feature, which was only used by developer's
1592testing, has been removed since it has been largely supplanted by
1593uninit_bg.  This also simplifies the code.
1594
1595