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