Whamcloud - gitweb
Improve I/O error messages in e2fsck
[tools/e2fsprogs.git] / RELEASE-NOTES
1 E2fsprogs 1.40-WIP (April 7, 2007)
2 ==================================
3
4 Add libreadline.so.5 support to libss.
5
6 Impove badblocks -n/-w exclusive usage message.
7
8 Fix dump_unused segfault in debugfs when a filesystem is not open
9
10 Fix memory leak in blkid library.  (Addresses Debian Bug: #413661)
11
12 Allow the debugfs lcd command to work w/o a filesystem being open.
13 (Addresses LTC Bugzilla #27513)
14
15 Fix e2fsck to clear i_size for special devices with a bogus i_blocks
16 field on the first pass.
17
18 Fix e2fsck to set the file type of the '..' entry when connecting
19 a directory to lost+found.  (Addresses Lustre Bug: #11645)
20
21 Enhance e2fsck to recover directories whose modes field were corrupted
22 to look like special files.  This is probably only useful in
23 artificial test cases, but it will be useful if we ever do the "inodes
24 in directory" idea for ext4.
25
26 Allow debugfs to dump (and rdump) > 2GB files.  (Addresses Debian Bug:
27 #412614)
28
29 Fix resize2fs parsing of size parameter (in sector units).  This was
30 actually a bug in libe2p's parse_num_blocks() function.  When handling
31 the 's' suffix, it was ignoring the blocksize information passed in
32 from the caller and always interpreting the number in terms of a 1k
33 blocksize.  (Addresses Debian Bug: #408298)
34
35 There was a floating point precision error which could cause e2fsck to
36 loop forever on really big filesystems with a large inode count.
37 (Addresses Debian Bug: #411838)
38
39 Fix memory leak in ext2fs_write_new_inode()
40
41 Add support for using a scratch files directory to reduce e2fsck's
42 emory utilization on really big filesystems.  This uses the TDB
43 library.  See the [scratch_files] section of the e2fsck.conf man page
44 for more details.
45
46 Fixed type-punning bug which caused dumpe2fs to crash on the Arm
47 platform (Addresses Debian Bug: #397044)
48
49 Add explanatory message to badblocks that -n and -w are mutually exclusive
50 (Addresses Debian Bug: #371869)
51
52 Allow debugfs and dumpe2fs to support fs features under development.
53
54 Add support for the new flag EXT2_FLAG_SOFTSUPP_FEATURES flag to
55 ext2fs_open() , which allows application to open filesystes with features
56 which are currently only partially supported by e2fsprogs.
57
58 Allow unix_io to support offsets greater than 2G (Addresses
59 SourceForge Bug: #1547922)
60
61 Fixed overflow and signed/unsigned problems caused by the number of
62 blocks or inodes exceeding 2**31 or being close to 2**32-1.
63
64 Add support for unsigned directory hash calculations with hints in the
65 superblock to fix cross-architectural portability for htree
66 directories with filenames where the high 8th bit is set.  (Addresses
67 Debian: #389772)
68
69 Fix resize2fs so that it gives user-intelligible error messages if the
70 filesystem or the kernel does not support on-line resizing.
71 (Addresses Debian Bug: #380548)
72
73 Require mke2fs -F -F for really dangerous operations, since -F is
74 needed for less dangerous operations such as creating filesystems
75 images in regular files, or creating filesystems on whole block
76 devices.  These relatively innocuous usages should NOT be confused
77 with running mke2fs on an apparently-mounted or in-use filesystem.
78
79 Allow the default inode size to be specified into the mke2fs.conf
80 file.
81
82 Make the smallest default journal size is big enough so that on-line
83 resizing should always work.
84
85 Fix silly spelling error in e2fsck.  (Addresses SourceForge bug:
86 #1531372)
87
88 Fix debugfs coredump when lsdel is run without an open filesystem
89 (Addresses Debian Bug: #378335)
90
91 Fix debugfs display bug us that bytes that have the high bit set are
92 displayed as "ec" instead of "ffffffec".
93
94 Add support in lsattr so it will display the EXT4_EXTENTS_FL flag.
95
96 Device mapper scanning wasn't working in the blkid library because the
97 pathnames had an extra "/dev" when they were being probed.
98
99 Add GFS/GFS2 support to the blkid library.
100
101 Fix blkid support of empty FAT filesystem labels.
102
103 Avoid recursing forever (or for a long time) when the blkid library
104 searches for a device and there are symlinks to directories in /dev.
105
106 Avoid unaligned halfword access in blkid when accessing FAT
107 superblocks, as this will cause Sparc/Solaris systems to throw a
108 SIGBUS error.
109
110 The latest devmapper libraries requires pthreads, add -lpthreads to
111 the static link libraries for e2fsck.static if devmapper is enabled.
112 (Addresses Debian bug: #388718)
113
114 Improve the (non-installed, for experts only) findsuper program by
115 printing the uuid and label from the superblocks, as well as the
116 starting and ending offsets of the filesystem given the information in
117 the superblock.  Omit by default printing superblocks that are likely
118 found in located in an ext3 journal unless an explicit -j option is
119 given.
120
121 Updated French and Dutch translations and added Vietnamese translation.
122
123 Use FreeBSD's DIOCGMEDIASIZE and DIOCGDINFO ioctls if available when
124 determining a partition's size, since binary searching to determine
125 the device doesn't work on FreeBSD.
126
127 Fixed spelling mistakes, typos, and otherwise clarified man pages.
128 (Addresses Debian Bug: #369761, #373004, #379695)
129
130 Fixed various Debian packaging issues --- see debian/changelog for
131 details.  (Addresses Debian Bugs #389554, #390664, #413208)
132
133
134 Programmer's notes:
135 -------------------
136
137 E2fsck now supports the %It expansion when printing a problem report.
138 It will print the type of the inode in the problem context.
139
140 Fix misc/Makefile.in so that it builds even if e2fsck hasn't been built yet
141 (Addresses Sourceforge Bug: #1565561)
142
143 Remove unused variables and other lint/gcc -Wall cleanups
144
145 Add check to ext2fs_get_device_size() so it will return EFBIG for for
146 filesystems contained in regular files where the filesystem image size
147 is returned by stat64().
148
149 Set local environment variables to C so mk_cmds and compile_et always
150 work.  (Addresses SourceForge Bug: #1532177)
151
152 Added the 64-bit byte swapping function ext2fs_swab64().
153
154 Added two new helper functions to prevent 2**31/2**32-1 overflow
155 problems: ext2fs_div_ceil() and e2p_percent().
156
157 Create new ext2fs library inline functions ext2fs_group_first_block()
158 and ext2fs_group_last_block() in order to calculate the starting and
159 ending blocks in a block group.
160
161 Create the generated files read-only to remind developers not to edit them.
162
163 Add support for autoconf 2.60 (with backwards compatibility for older
164 versions of autoconf).
165
166 Added an "make rpm" target to top-level Makefile
167
168 Added various FreeBSD portability fixes.
169
170 Exclude mercurial files from the RPM build tree to speed up copy/build.
171
172 Use root_sysconfdir to define the locations of mke2fs.conf and
173 e2fsck.conf instead of using a hard-coded /etc pathname.
174
175 Prevent e2fsck.h and ext2_ext_attr.h from getting included multiple times.
176
177 Fixed "make clean" in blkid's Makefile.in file from removing tst_*.c files.
178
179 If diff -u is supported, use it to report test failures.
180
181 Updates/improvements to RPM spec file
182
183 Add on-disk format definitions for the following new features:
184 EXT4_FEATURE_RO_COMPAT_HUGE_FILE, EXT4_FEATURE_RO_COMPAT_GDT_CSUM,
185 EXT4_FEATURE_RO_COMPAT_DIR_NLINK, EXT4_FEATURE_INCOMPAT_64BIT,
186 EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE
187
188 Add a new make target "checked-failed" in the tests directory which
189 reruns any failed tests
190
191 Update draft-leach-uuids-guids-01.txt with rfc4122.txt
192
193 Fix miscellaneous bugs reported by Coverity: Dead code, potential nul
194 pointer dereferences, memory leaks, etc.  None were security-criticial
195 problems.
196
197 Fix up usage and decrement error messages in the test_icount program
198
199 Add debugging code to the com_err library; if the environment variable
200 COMERR_DEBUG is set to 1, print out debugging messages as error tables
201 are added and removed from the com_err library.  If the
202 COMERR_DEBUG_FILE environment variable is set (and the process is not
203 setuid) the debugging messages may be redirected to a file.
204
205 Change all of the e2fsprogs programs to use the newer add_error_table()
206 and remove_error_table() interfaces instead of the much older
207 initialize_*_error_table() function.
208
209 Add TDB support into the ext2fs library.  This allows us to have a
210 guaranteed library we can count on always being present so we can
211 store data in an on-disk database.
212
213 Add support for using TDB to store the icount data, so we don't run out
214 of memory when checking really large filesystems.
215
216
217 E2fsprogs 1.39 (May 29, 2006) 
218 =============================
219
220 Fix 32-bit cleanliness in e2fsprogs so that we can support filesystems
221 between 2**31 and 2**32 blocks.
222
223 Change mke2fs to use /etc/mke2fs.conf as a configuration file to
224 configure the filesystem features, blocksize, and inode_ratio for
225 different filesystem types.
226
227 Mke2fs will now create filesystems hash trees and on-line resizing
228 enabled by default, based on the new /etc/mke2fs.conf file.
229
230 The e2fsprogs tools (resize2fs, e2fsck, mke2fs) will open the
231 filesystem device node in exclusive mode to prevent accidents by
232 system administrators.  In the case of resize2fs and mke2fs, it will
233 only use exclusive mode if the filesystem is not mounted.
234
235 Fixed a bug in mke2fs which caused it to to fail when creating the
236 resize inode for large filesystems.  (Addresses Debian Bug #346580)
237
238 When allocating space for the RAID filesystems with the stride
239 parameter, mke2fs will now place each portion of the group's inode
240 table right up after the superblock (if present) in order to minimize
241 fragmentation of the freespace.
242
243 Speed up mke2fs and e2fsck by writing inode and block bitmaps more
244 efficiently by writing the inode and block bitmaps in one pass, thus
245 reducing the number of disk seeks required.
246
247 Add support for on-line resizing to resize2fs.
248
249 Fix blkid library so that logic to determine whether or not a device's
250 cached information in /etc/blkid.tab needs to be verified or not
251 doesn't get confused by a system clock which is insane (for example,
252 if the battery is dead on a Macintosh running PPC Linux.  (Addresses
253 Red Hat Bug: #182188)
254
255 The blkid library will now store the UUID of the external journal used
256 by ext3 filesystems, so that in the future, the userspace mount binary
257 can use this to find the location of the external journal and pass
258 this information to the kernel.
259
260 E2fsck will now consult a configuration file, /etc/e2fsck.conf to
261 control how various options should be handled.  See the e2fsck.conf
262 man page for more details.   (Addresses Debian Bug: #150295)
263
264 E2fsck now prints an explanatory message when delaying a filesystem
265 check when the system is running on battery.  (Addresses Debian Bug:
266 #350306)
267
268 E2fsck will detect if the superblock's last mount field or last write
269 field is in the future, and offer to fix if so.  (Addresses Debian Bug
270 #327580) These problems will be fixed automatically in preen mode
271 since Debian's boot sequence bogusly doesn't set the time correctly
272 until potentially very late in the bootup process, and this can cause
273 false positives which will cause users' systems to fail to boot.
274 (Addresses Debian Bugs #343662 and #343645)
275
276 E2fsck now checks to see if the superblock hint for the location of
277 the external journal is incorrect, and if so, offer to update it.
278 (Addresses Debian Bug: #355644)
279
280 Fix e2fsck from segfaulting on disconnected inodes that contain one or
281 more extended attributes.  (Addresses Debian Bug: #316736, #318463)
282
283 E2fsck will stop and print a warning if the user tries running a
284 read/write badblocks test on a read-only mounted root filesystem.
285
286 Fix a memory leak in e2fsck's error paths.  (Thanks to Michael
287 C. Thompson for pointing these out; they were originally found using
288 Coverity.)
289
290 When resizing a file containing a filesystem, resize2fs will expand or
291 truncate a file as necessary.  (Addresses Debian Bug: #271607)
292
293 Resize2fs will now automatically determine the RAID stride parameter that
294 had been used to create the filesystem, and use that for newly created
295 block groups.   The RAID stride parameter may also be manually specified
296 on the command line using the new -S option to resize2fs.
297
298 Fix mke2fs so that it correctly creates external journals on
299 big-endian machines (such as a S/390).  
300
301 Fix a bug in the e2p library which could cause dumpe2fs to (rarely)
302 fail to print out the journal or hash seed UUID.  (Thanks to Guillaume
303 Chambraud for pointing this out.)
304
305 Dumpe2fs will now print the size of the journal (if present).
306
307 Fix debugfs's set_inode_field command so it can properly set the frag,
308 fsize, uid_high, gid_high, and author fields in the inode instead of
309 silently failing, and so that setting the i_size actually sets i_size
310 correctly.
311
312 Add a new debugfs command, set_current_time, which sets fs->now so
313 that regression test suites can repeatedly modify the filesystem's
314 last_write fields.
315
316 Fix a bug in debugfs's icheck which would incorrectly report the owner
317 of an extended attribute block.
318
319 Fix the debugfs commands htree_dump, dx_hash, and list_dir so they print a
320 print a usage message when an illegal option character is given.
321
322 Fix debugfs's dump_unsued command on filesystems with a 64k blocksize
323 so it won't core dump.  (Addresses SourceForge bug #1424311)
324
325 Fix mklost+found so that it creates a full-sized directory on
326 filesystems with larger block sizes.
327
328 Fix a file descriptor leak in blkid library.
329
330 Fix a display bug in "badblocks -sv" so that the done message properly
331 clears the block number at the end of the test.  (Addresses Debian Bug
332 #322231)
333
334 Allow fractional percentages to the -m option in mke2fs and tune2fs
335 (Addresses Debian Bug: #80205)
336
337 Use fstat/fstat64 in getsize.c if the the target is a regular file,
338 instead of attempting to do a binary search.  Fix some fd leaks in
339 error cases.
340
341 Add support for device mapper library to the blkid library to ensure
342 that the "best" (i.e., leaf) device is probed by the blkid library.
343
344 Fix the blkid library so that it notices when an ext2 filesystem is
345 upgraded to ext3.
346
347 Improve the blkid's library VFAT/FAT detection; it now understands
348 labels stored in the root directory, and is more paranoid about
349 checking the FAT superblock values.
350
351 Fixed a fd leak in the uuid library which was causing problems for the
352 LVM tools.  (Addresses Debian Bug: #345832)
353
354 Add support for the reiser4 and software suspend partitions to the
355 blkid library.  Also add support for extract the label from iso9660
356 filesystems.
357
358 Fix a compile_et bug which miscount the number of error messages if
359 continuations are used in the .et file.
360
361 Add extra sanity checks to protect users from unusual cirucmstances
362 where /etc/mtab may not be sane, by checking to see if the device is
363 reported busy (works on Linux 2.6) kernels.  (Addresses Debian Bug
364 #319002)
365
366 Updated French, Dutch, Polish, and Swedish translations.  (Addresses Debian
367 Bug: #343149, #341911, #300871, #316604, #316782, #330789)
368
369 Fix use-after-free bug in e2fsck when finishing up the use of the
370 e2fsck context structure.
371
372 Fixed spelling mistakes, typos, and otherwise clarified man pages and
373 documentation.  (Addresses Debian Bugs: #329859, #322188, #316811,
374 #312515, #351268, #357951, #347295, #316040, #368392, #368393, #368394,
375 #368179)
376
377 Fixed various Debian packaging issues --- see debian/changelog for
378 details.  (Addresses Debian Bugs #317862, #320389, #290429, #310950,
379 #310428, #330737, #330736, #329074, #356293, #360046, #366017, #364516,
380 #362544, #362970)
381
382
383 Programmer's notes:
384 -------------------
385
386 Update config.guess and config.sub to latest version (2006-02-23) from
387 FSF.
388
389 Fix asm_types.h type conflicts on AMD 64 platforms.  (Addresses Debian
390 Bugs: #360661, #360317)
391
392 Fixed the Makefile so that they work correctly on newer versions of
393 GNU make (i.e., 3.81).
394
395 Add valgrind support to the regression test suites, and eliminate
396 false positives from valgrind.
397
398 Add a regression test suite for the blkid library.
399
400 Fix a fencepost error in resize2fs caught by valgrind.  
401
402 Fix compiler warnings about missing memcpy prototypes.
403
404 We no longer have the sparc assembly code in the header file any more,
405 so we shouldn't set _EXT2_HAVE_HAS_BITOPS_ for the sparc.  This would
406 break compiles on the sparc architectures when using gcc.
407
408 In the libext2fs library, add the new field fs->now which if non-zero
409 is used instead of the system time when setting various filesystem
410 fields (last modified time, last write time, etc.)
411
412 Fix gcc 4.01 complaints by adding a missing #include <string.h> to
413 ext2fs.h which is needed since the inline functions use memcpy().
414 (Addresses Sourceforge Bug #1251062)
415
416 Use BUILD_CFLAGS and BUILD_LDFLAGS instead of CFLAGS and LDFLAGS in
417 the build system when building files in the util directory which are
418 needed during the build process.  This avoids potential problems when
419 cross-compiling and some of the options specified in CFLAGS or LDFLAGS
420 are not recognized as valid by the host compiler.  (Addresses
421 Sourceforge Bug #1261547)
422
423 Clean up the blkid library by making the superblock and generic i/o
424 functions to be more generic.  Clean up interface to the probe
425 function, and fix memory leak.  Finallly, remove an unneeded reference
426 to probe.h in the lib/blkid/resolve.c
427
428 Add an ext2fs_read_bb_FILE regression test to confirm proper detection
429 of invalid block #'s.
430
431 The x86 asm constraints for ext2fs_{set/clear}_bit have been fixed to
432 indicate that the the function read/writes the memory location.
433
434 Fix various gcc -Wall complaints.
435
436 Add a dependency to make sure that the subdirectories are created
437 before creating all of the object files, in order to address parallel
438 build problem in the library Makefiles.  (Addresses Sourceforge Bug:
439 #1261553)
440
441 Add $(LDFLAGS) to the command line argument when generating an ELF or
442 Solaris shared library, to allow cross-compile and other builds that
443 might need to specify -L paths to needed libraries.  (Addresses
444 Sourceforge Bug #1261549)
445
446 Add a new feature, EXT2_FEATURE_COMPAT_LAZY_BG, which is initially
447 intended for testing purposes.  It allows an ext2/ext3 developer to
448 create very large filesystems using sparse files where most of the
449 block groups are not initialized and so do not require much disk
450 space.  Eventually it could be used as a way of speeding up mke2fs and
451 e2fsck for large filesystem, but that would be best done by adding an
452 RO_COMPAT extension to the filesystem to allow the inode table to be
453 lazily initialized on a per-block basis, instead of being entirely
454 initialized or entirely unused on a per-blockgroup basis.
455
456 Fix backwards compatibility so e2fsprogs will better compile on Linux
457 2.0.35 systems.
458
459 Make test scripts more robust against locale-related environment variables
460
461 Fix type warning problem with sizeof() in ext2fs_open2().
462
463 Fix type warning problem with time_t in debugfs.
464
465
466 E2fsprogs 1.38 (June 30, 2005)
467 ==============================
468
469 Fix blkid's test programs (built with "make check") compile correctly
470 even without "configure --enable-blkid-debug".
471
472 Fix ia64 core dump bug caused by e2fsprogs running afoul of C99 strict
473 type aliasing rules on newer gcc compilers.  (Addresses Red Hat
474 Bugzilla ##161183.)
475
476 Fix com_err library to make it more compatible with recent changes
477 made to the com_err library in MIT Kerberos V5 version 1.4.
478 (Addresses Sourcefroge Bug #1150146)
479
480 General cleanup of messages printed by e2fsprogs programs for grammar,
481 consistency, and to make life easier for translators.  Fixed a few
482 strings containing English that had not been marked as needing
483 translations.  Removed strings that do not need to be translated, to
484 make life easier for translators.
485
486 Mke2fs and badblocks will take advantage of a feature in Linux 2.6 to
487 test to see if a device appears to be in use instead of just relying
488 on /proc/mounts and /etc/mtab.  (Addresses Debian Bug #308594).
489
490 Fix portability problem in the filefrag program affecting platforms
491 where the size of an integer is smaller than the size of a long.
492 (Addresses Debian Bug #309655)
493
494 Mke2fs will now use a larger journal by default for filesystems
495 greater than 4GB.  (128 MB instead of 32MB).
496
497 Mke2fs will refuse to create filesystems greater than 2**31-1 blocks,
498 unless forced.  This is to avoid signed vs. unsigned kernel bugs in
499 block numbers that still need to be fixed.
500
501 The blkid program has a new option which will more efficiently search
502 for device when it is known (or expected) that only one matching
503 device will be found in the system, such as when doing a lookup by
504 UUID.
505
506 Debian's e2fsprogs-specific initrd fragment will avoid including
507 unnecessary libraries into the initrd ramdisk by unsetting LD_PRELOAD
508 and LD_LIBRARY_PATH, and filtering out libraries found in
509 /etc/ld.so.preload.  (Addresses Debian Bug: #304003)
510
511 Fixed a potential portability issue in the blkid programs for
512 architectures where the char type is unsigned.  (Addresses Sourceforge
513 Bug: #1180585)
514
515 Fix a bug in filefrag so that it doesn't falsely count an extra
516 discontinuity when the first block found is an indirect block.
517 (Addresses Debian Bug #307607).
518
519 Fix blkid's recognition of cramfs filesystems, and enhance it to be
520 able to handle cramfs labels.
521
522 Fix debugfs's stat command to not core dump when a filesystem is not
523 open.
524
525 Fix e2fsck's handling of error conditions caused by the resize inode
526 claiming blocks that are also used by other inodes, a filesystem
527 corruption which was commonly caused by a bug in Fedora Core 3's
528 resize2fs program.
529
530 Fixed bug in filefrag which caused it to fail on non-ext2/3
531 filesystems.  (Addresses Debian Bug: #303509)
532
533 If the superblock last mount time indicates that the system clock may
534 not be accurate, then e2fsck will omit checking inodes' deletion time
535 field for indications of a potential corrupted orphaned inode list.
536 (Previously e2fsck only ommited these LOW_DTIME checks when the
537 superblock's last write time looked insane.)
538
539 Fixed a IA64 core dump bug in the e2p library which affected dumpe2fs.
540 (Addresses Debian bug #302200)
541
542 Make the blkid library more paranoid about being run from setgid
543 programs, and to use __secure_getenv() from libc if it is available.
544
545 Fixed spelling mistakes, typos, and otherwise clarified man pages.
546 (Addresses Debian Bugs: #304591, #304592, #304594, #304597, #304593
547 and Sourceforge Bug: #1189803)
548
549 Updated and fixed translations.
550
551 Fixed various Debian packaging issues --- see debian/changelog for
552 details.
553
554 Programmer's notes:
555 -------------------
556
557 Ext2fs_set_bit(), ext2fs_clear_bit(), and ext2fs_test_bit( have been
558 changed to take an unsigned int for the bit number.  Negative bit
559 numbers were never allowed (and didn't make any sense), so this should
560 be a safe change.  This is needed to allow safe use of block numbers
561 greater than or equal to 2**31.
562
563 The compile_et program will avoid recreating generated foo_err.c and
564 foo_err.h files if no changes are necessary.  The compile_et program
565 will also atomically replace these files to avoid a potential parallel
566 build race problem on SMP systems.  (Addresses Sourceforge Bug:
567 #1157933)
568
569 Added a new function to the blkid library, blkid_probe_all_new(),
570 which only probes newly added disk devices, and change
571 blkid_find_dev_with_tag() to use this function so that when a
572 requested tag is not found, devices that were previously not checked
573 are searched before searching all devices in the system.
574
575 Added new functions to the blkid library, blkid_dev_set_search() and
576 blkid_dev_has_tag().
577
578 E2fsck's problem strings can now use @m and @n as abbrevations for
579 "multiply-claimed" and "invalid", respectively.
580
581 The e2fsprog.pot file now has an explanation of how the @-expansion
582 and %-expansion works, and strings in e2fsck/problem.c which contain @
583 characters now have comments in e2fsprogs.pot with the @-expansion to
584 make life easier for translators.
585
586 Fixed missing return values in the ext2fs library which could cause it
587 to return random garbage in certain error conditions.
588
589 Allow the current time to be overriden via the E2FSCK_TIME environment
590 variable for use in regression tests.
591
592 The test scrpit driver program now exits with a non-zero status if
593 there any of its test that it ran failed.
594
595 Fixed problems with parabuilds on SMP systems.  (Addresses Sourceforge
596 Bug: #1157933)
597
598 Fixed "make check" so that it compiles correctly even when e2fsprogs'
599 header files have not be installed in the system include directories.
600 (Addresses Sourceforge Bug: #1180572)
601
602 Fixed gcc -Wall nits.
603
604
605 E2fsprogs 1.37 (March 21, 2005)
606 ===============================
607
608 Add support for checking the validity of Extended Attributes stored in
609 inodes to e2fsck.
610
611 Add support for dumping the contents of large inodes to debugfs,
612 including the extended attributes stored in inodes.
613
614 Fix mke2fs, e2fsck, debugfs, and the ext2fs_mkdir function so that
615 when we create a new inode we make sure that the extra information in
616 the inode (any extra fields in a large inode and any ea-in-inode
617 information) is initialized correctly.  This can take place when
618 mke2fs creates the root and lost+found directory, when e2fsck creates
619 a new root inode or a new lost+found directory, and when the user uses
620 the debugfs write, mknod, or mkdir commands.  Otherwise, the newly
621 create inode could inherit garbage (or old EA information) from a
622 previously deleted inode.
623
624 Fixed a bug in e2fsck so it would notice if a file with an extended
625 attribute block was exactly 2**32 blocks, such that i_blocks wrapped
626 to zero.
627
628 Added support to filefrag to detect files which are using the new
629 experimental file extents format, and use the non-ext2 algorithm in
630 that case.  Fixed a bug to avoid reporting a false discontinuity if
631 there is one or more unallocated blocks at the beginning of a file.
632
633 Duplicated a check for noticing whether or not the number of blocks
634 (given a certain blocksize) is greater than 2**32 when the
635 BLKGETSIZE64 ioctl is not available to ext2fs_get_device_size().  This
636 allows mke2fs to automatically use a larger blocksize when creating a
637 filesystem on a very large device when run on systems that do not
638 support BLKGETSIZE64.
639
640 Fix the I18N build which was broken in e2fsprogs 1.36 because the
641 build system had been switched to treat the .gmo files as shipped
642 files (for backwards compatibility with systems that have older GNU
643 I18N tools installed), but the gen_tarball.in script was still
644 removing the .gmo files from the official source distribution.
645
646 Fixed various Debian packaging issues --- see debian/changelog for
647 details.  (Addresses Debian Bugs ##296769, #299341)
648
649 Programmer's notes:
650 -------------------
651
652 Added new functions to the e2p library which convert between a string
653 and os_type: e2p_os2string() and e2p_string2os(), and used them to
654 make the generated binaries more compact.
655
656 Fixed a compile-time error on Darwin systems.
657
658 Cleaned up the lib/ext2fs Makefile slightly.
659
660
661 E2fsprogs 1.36 (February 4, 2005)
662 =================================
663
664 All of the patches that were applied to Fedore Core 3's
665 e2fsprogs-1.35-11.2 have been integrated, although sometimes with a
666 lot of bug fixes first.  Users of Fedora Core 3 are strongly
667 encouraged to upgrade to e2fsprogs 1.36 as soon as possible.
668
669 Add support for filesystem with the online resizing via resize inode
670 feature.  Fixed numerous bugs from the Fedora patches.  The Fedora
671 patches also didn't bother to do any consistency checking on the
672 resize inode, or add any tests to the regression test suite.  The "-R
673 resize=4g" option to mke2fs was a no-op in the Fedora patches, despite
674 being listed in mke2fs's usage message.  All of these shortcomings
675 have been corrected.
676
677 E2fsck can also also fix filesystems trashed by Fedora's resize2fs
678 program.  In order to do this, the user must run the commands:
679
680         debugfs -w /dev/hdXXX -R "features ^resize_inode"
681         e2fsck -f /dev/hdXXX
682
683 Optionally, the ext2prepare command can be used to re-enable online
684 resizing after the filesystem has been fixed.
685
686 The fsck program will now accept an optional filedescriptor argument
687 to the -C option.  (The Fedora version of this patch would sometimes
688 cause fsck to ignore a parameter on fsck's command line in some rare
689 cases, sigh.)
690
691 Make sure e2fsprogs doesn't write garbage into the reserved portion of
692 large inodes.
693
694 Make sure resize2fs releases the blocks belonging to the old inode
695 table blocks when moving the inode table.  (Addresses Debian Bug:
696 #290894)
697
698 Skip the r_resize_inode test if resize2fs is not compiled (due to
699 configure --disable-resizer)
700
701 E2fsck now checks the summary filesystem accounting information, and
702 if any of the information is obviously wrong, it will force a full
703 filesystem check.  (Addresses Debian Bug #291571)
704
705 Fix e2fsck to not complain when the resize_inode feature is enabled,
706 s_reserved_gdt_blocks is zero, and there is no DIND block allocated in
707 the resize inode.
708
709 Fix e2fsck to note delete symlinks that contain an extended attribute
710 after the ext_attr feature flag has been cleared.  (Addresses Red Hat
711 Bugzilla #146284).
712
713 Add new utility program, copy_sparse.c, which is very useful
714 for dealing with large sparse files (such as e2image files).
715
716 Add support for jnl_blocks[] for debugfs's set_super_value.
717
718 Fix filefrag so that it works correctly with sparse files.
719
720 Filefrag -v will print first and last blocks.
721
722 Add interpretation of OS Creator values for FreeBSD and Lites in mke2fs
723 and dumpe2fs.
724
725 Add mke2fs support so that it can support filesystems larger than 4TB
726 automatically, by retrying with a 4k blocksize if the device size is
727 too big to be expressed using a 1k blocksize.  (Addresses Sourceforge
728 bug #1106631)
729
730 Change blkid to test for NTFS first because Windows sometimes doesn't
731 clear enough of the parition to confuse the probing routines into
732 thinking the old filesystem type is still valid.  (Addresses Debian
733 Bug #291990)
734
735 Add support for swap partition label and uuid's in the blkid library.
736
737 Add support to the blkid library to recognize Oracle ASM volumes.
738
739 Make blkid -t display all devices that match the specified criteria,
740 not just the first one, and work more consistently when the blkid
741 cache file is not available or set to /dev/null.  (Addresses Debian
742 Bug #290530 and #292425)
743
744 Badblocks will now correctly display block numbers greater than
745 999,999,999 in its progress display.
746
747 The tune2fs program will not allow the user from setting a ridiculous
748 number of reserved blocks which would cause e2fsck to assume the
749 superblock was corrupt.  E2fsck's standards for what is a ridiculous
750 number of reserved block has also been relaxed to 50% of the blocks in
751 the filesystem.
752
753 The blkid library will return vfat in preference to msdos, and ext3 in
754 preference to ext2 (if the journalling flag is set) so that mount will
755 do the right thing.  (Addresses Debian bug #287455)
756   
757 Mke2fs will now use the -E option for extended options; the old -R
758 (raid options) option is still accepted for backwards compatibility.
759 Fix a double-free problem in resize2fs.  (Red Hat Bugzilla #132707)
760
761 Mke2fs will now accept a size in megabytes, gigabytes, and other units
762 (via "32m" or "4g" on the command line) if the user finds this more
763 convenient than specifying a block count.
764
765 Fix an obscure, hard-to find bug in "e2fsck -S" caused by an inode
766 cache conherency problem.
767
768 Debugfs now supports a new command, set_inode_field, which allows a
769 user to manually set a specific inode field more conveniently, as well
770 as set entries in the indirect block map.
771
772 Debugfs's set_super_value command has been enhanced so that the user
773 can set most superblock fields, including the date/time fields and
774 some of the more newsly added superblock fields.
775
776 E2fsprogs programs now accept an offset to be passed to the file
777 specifiers, via the syntax: "/tmp/test.img?offset=1024".
778
779 E2fsprogs programs will now accept blocksizes up to 65536; kernel
780 support on the x86 doesn't exist for now, but it can be useful on
781 other architectures with page sizes greater than 4k.  There are 2.6
782 kernel patches out there which enable this, but they are of this
783 writing still experimental.
784
785 The e2image command now takes the -s option which will scramble
786 directory entries for raw image files.
787
788 Fix a file descriptor leak in the filefrag program.
789
790 Make sure e2fsck doesn't crash when /proc/acpi/ac_adapter is not
791 present.
792
793 Fix bug in debugfs where kill_file would lead to errors when deleting
794 devices and symlinks.  (Sourceforge Bugs #954741 and #957244)
795
796 Fix bug in the blkid library when detecting the ocfs1 filesystem 
797
798 Remove obsolete EVMS 1.x and a.out DLL support.
799
800 E2fsck will attempt to recover from a journal containing illegal blocks.
801
802 Fixed two potential ordering constraint problems in e2fsck which might
803 cause the filesystem to be corrupted if e2fsck is interrupted during a
804 (extremely narrow) race window.  Thanks to Junfeng Yang from the
805 Stanford Metacompilation group for pointing this out.
806
807 Fixed bug in e2fsck where it would not accurately detect whether or
808 not the system is running on adaptor if the ACPI device representing
809 the AC adapter didn't correspond to the what was used on IBM
810 Thinkpads.
811
812 Change e2fsck to accept directories greater than 32MB.
813
814 Fix e2fsck so that a checkinterval of zero disables a time-based check
815 of the filesystem.
816
817 Debugfs will check the DEBUGFS_PAGER enviroment variable in preference
818 to the PAGER environment variable.  (Addresses Debian Bug #239547)
819
820 Tune2fs will not mark rewrite the superblock if the feature bitmasks 
821 are not modified.
822
823 The debugfs program will set the filetype information when creating a
824 link.
825
826 Add debugfs -d option to use a separate source of data blocks when
827 reading from an e2image file.
828
829 Add e2image -I option which allows the e2image metadata to be
830 installed into a filesystem.
831
832 Fixed bug in the badblocks program which caused "done" to always
833 appear in english even when a translation was available.  (Addresses
834 Debian Bug #252836)
835
836 The blkid program has a new option -o which controls the output format
837 of the blkid program; this is makes blkid more convenient to use in
838 shell scripts.
839
840 Fix a minor bug in uuid library, which was not using the full 14 bits
841 of clock sequence when generating UUID's.
842
843 Fix a Y8.8888K problem in the uuid library.
844
845 Logsave now creates a new session id for itself to avoid getting
846 killed by init whan transitioning between init levels.
847
848 Change the licensing of the UUID library to be the 3-clause BSD-style
849 license; this allows Apple to use the uuid library in Darwin.
850
851 Add ocfs and ocfs2 probe support into the blkid library.
852
853 Fix a memory and file descriptor leak in the blkid library.
854
855 The blkid library will revalidate the device if the system time is
856 earlier than last verification time of the device, since that
857 indicates that the system time is probably nottrustworthy.
858
859 The blkid library will override the default location of the blkid.tab
860 file by the BLKID_FILE environment variable, if it is available.
861
862 Change the getsize functions to use the BLKGETSIZE64 ioctl on Linux 2.6.
863
864 Add various portability fixes for lame new versions of glibc, Darwin
865 and GNU/KFreeBSD, as well as removing XSI:ism's.  (Addresses Debian
866 Bugs #239934, #264630, #269044, #255589, #289133)
867
868 Add support for Windows 9x/NT under Cygwin.
869
870 Updated and clarified various man pages.  (Addresses Debian Bugs #236383,
871         #241940, #238741, #242995, #256669, #268148, #256760, #273679)
872
873 Updated and fixed translations.   (Addresses Debian bugs #244105, #262836)
874
875 Update the rpm spec files so that it works better with Fedora core 2
876 and RH9.
877
878 Fixed various Debian packaging issues (see debian/changelog).  In
879 particular, fixed the Debian initrd scripts.  (#241183, #248050,
880 #253595, #247775)
881
882
883 Programmer's notes: 
884 -------------------
885
886 Fixed various gcc -Wall warnings.
887
888 The uuid library now has new functions uuid_unparse_upper() and
889 uuid_unparse_lower() which forces the case of the hex digits to be
890 upper case, or lower case.
891
892 The build process has been speeded up by enhancing the subst program
893 to update the modtime on the generated files even when the generated
894 file hasn't changed.
895
896 The uuid library now uses C99 stdint.h types instead of custom types.
897
898 Updated config.guess and config.sub with newer versions from the FSF.
899
900 Removed out of date .cvsignore files from the source distribution.
901
902 The ext2fs_unlink() function will return an error if both the name and
903 inode number are unspecified, to avoid doing something surprising
904 (such as unconditionally deleting the first directory entry).
905 Directory entries are now deleted by coalescing them with the previous
906 directory entry if possible, to avoid directory fragmentation.  This
907 is not an issue with the e2fsprogs suite, but may be a problem for
908 some of the users of libext2fs, such as e2tools.
909
910 Add support for version numbers of the form "1.36-rc1".
911
912 Fix build of mke2fs.static.
913
914 Add basic ext2fs library support for large (EA in inode) inodes.
915
916 The test_io mechanism can now abort after n reads or writes to a
917 particular block.  The block is specified by TEST_IO_BLOCK environment
918 variable, and the read/write count by the TEST_IO_READ_ABORT and
919 TEST_IO_WRITE_ABORT environment variables.  The block data is now only
920 dumped if the 0x10 bit is set in TEST_IO_FLAGS.
921
922 UUID_DEFINE() in the uuid library now creates a static variable, with
923 __attribute__ ((unused)) if we are using GCC, so that UUID_DEFINE can
924 be used in header files.
925
926 Add support for the install-strip and install-shlibs-strip targets, as
927 suggested by the GNU coding guielines.  "make install" no longer
928 strips the binaries which are installed.
929
930 Remove support for the --enable-old-bitops configure option which was
931 only for very old sparc systems.
932
933 Remove support for --enable-clear-htree; this was only needed during
934 the early development of the htree patch.
935
936 Use Linux-kernel-style makefile output so it is easier to see compiler
937 warnings.
938
939 Update gettext files to version 0.14.1.
940
941 Update to use autoconf 2.5x.
942
943 Improved support for compiling e2fsprogs under dietlibc.
944
945 Make e2fsprogs portable to Solaris and FreeBSD systems.
946
947 Add blkid_verify(), blkid_get_library_version(), and
948 blkid_parse_version_string() functions to the blkid library.
949
950 Add pkg-config files for e2fsprogs's libraries.
951
952 Fix "make uninstall" to so that it removes everything that is installed.
953
954 Add a configure --enable-maintainer-mode option which enables the
955 makefile rules to rebuild the configure script from configure.in, and
956 to reubuild the .gmo files in po directory.
957
958 Drop the sparc assembly bitwise operations; it's less efficient
959 than the GCC 3.4 compile code and triggers compiler warnings on
960 sparc64.  Thanks to Matthias Andree for his analysis and suggestions.
961 (Addresses Debian Bug #232326)
962
963
964 E2fsprogs 1.35 (February 28, 2004) 
965 ==================================
966
967 E2fsck has a new -k option, which in conjunction with the -c options,
968 preserves the existing badblocks list.
969
970 Cleaned up e2fsck's preen-mode messages during the passes 1b, 1c, and 1d.
971
972 E2fsprogs will now deal correctly with symlinks that contain
973 extended attribute information, which can be created using SE Linux.
974 (Addresses Debian Bug #232328)
975                                                                                
976 Remove a double longjump into an invalid stack frame bug in e2fsck.
977 (This was during an abort sequence, which normally worked on Linux and
978 caused a core dump on other operating systems.)
979
980 Fix NLS bug in e2fsck, by avoiding trying to expand an empty string
981 (the NLS library will replace "" with the .po header information).
982  
983 Fix a bug in mke2fs which caused -T largefile or -T largefile4 to core
984 dump due to a division by zero error.  (Addresses Debian bug #207082)
985
986 Fixed a bug in e2fsck which caused it to incorrectly fix a filesystem
987 when reconnecting a directory requires creating a lost+found
988 directory.  (Addresses Debian bug #219640).
989
990 Fixed a bug where e2fsck would bomb out if a journal needed to be
991 replayed when using an alternate superblock.
992  
993 E2fsck will give an extra grace period before actually forcing a check
994 if the laptop is running on battery.  The next time fsck runs while
995 the system is on the AC mains, or after the grace period is exceeded,
996 the filesystem will be checked.  (Addresses Debian bug #205177)
997
998 E2fsck will inform the user when there are 5 or fewer mounts before a
999 filesystem check will be forced.  (Addresses Debian bug #157194)
1000
1001 Fix e2fsck's handling of corrupted indirect blocks in the bad block.
1002 We now correctly handle the case where there is an overlap between a
1003 block group descriptor or a superblock and a bad block indirect block.
1004 In the case where the indirect block is corrupted, we now suggest
1005 "e2fsck -c".
1006
1007 Fix byte swap bugs in e2fsck that caused the journal backup location 
1008 in the superblock and symlinks created by SE Linux to be cleared
1009 by e2fsck on big-endian machines.  (Addresses Debian bug #228723)
1010
1011 E2fsck -c now replaces the current list of bad blocks with the ones
1012 found by badblocks.
1013
1014 Fix bugs in e2fsck and tune2fs which could cause a core dump if a
1015 non-existent LABEL or UUID specifier is to e2fsck or tune2fs.
1016
1017 Fix a potential bug in e2fsck which could cause it to core dump when
1018 trying to print the location of the backup superblock.
1019
1020 Protect against a potential core dump in e2fsck when printing a
1021 message about backup superblocks.
1022
1023 Add support for backing up the journal inode location in the
1024 superblock.  E2fsck will automatically save the journal information in
1025 the superblock if it is not there already, and will use it if the
1026 journal inode appears to be corrupted.  ext2fs_add_journal_inode()
1027 will also save the backup information, so that new filesystems created
1028 by mke2fs and filesystems that have journals added via tune2fs will
1029 also have journal location written to the superblock as well.
1030 Debugfs's logdump command has been enhanced so that it can use the
1031 journal information in the superblock.
1032
1033 E2fsck will now update all superblocks when moving the journal inode.
1034   
1035 Shrink the size of the e2fsck executable by moving some initialized
1036 variables to the BSS segment.
1037
1038 E2fsck will avoid printing the ^A and ^B characters which bracket the
1039 progress bar when stdout and stdin are a tty device instead of a pipe
1040 to another program.  (Addresses Debian bug #204137)
1041
1042 Debugfs's mkdir command will automatically expand the directory if
1043 necessary.  (Addresses Debian Bug: #217892)
1044  
1045 Fixed a bug in debugfs so that copying a file from /dev/null uses the
1046 correct mode bits.  (Addresses Debian Bug: #217456)
1047  
1048 If the environment variables DEBUFS_PAGER and PAGER are not set,
1049 debugfs now searches for the appropriate pager to use, beginning with
1050 /usr/bin/pager, and then falling back to 'more' and 'less'.
1051 (Addresses Debian bug #221977)
1052
1053 Debugfs will now support 2.6 device numbers where the major or minor
1054 number may be larger than 255.  (Addresses Sourceforge bug #865289)
1055  
1056 Fix debugging printf in resize2fs.  (Addresses Debian Bug #271605)
1057
1058 Chattr now stops processing options when it sees '--'.  (Addresses
1059 Debian bug #225188)
1060
1061 Fix regression tests so they work correctly when e2fsprogs is compiled
1062 with configure --disable-htree.
1063
1064 Fix bug in uuid library when there is no network card and the library
1065 is generating a time-based uuid.  The random MAC address was not
1066 correctly generated to be a multicast address.
1067  
1068 Add compile_et extensions from Heimdall that were missed the first time
1069 around.
1070
1071 Fix bug in badblocks when using O_DIRECT; we need to make sure that
1072 we're reading from an offset which is page aligned.  For read-only and
1073 read-write tests, we try to recover after an error so that we can
1074 continue reading on page-aligned boundaries.  (Addresses Debian Bug
1075 #203713)
1076   
1077 Badblocks now checks 64 blocks at a time instead of 16.  (Addresses
1078 Debian bug #232240)
1079  
1080 Updated and clarified various man pages.  (Addresses Debian Bug
1081 #206845, #222606, #214920, #232406)
1082
1083 Updated and fixed translations.   (Addresses Debian bugs #200086, #214633)
1084
1085 Fixed various Debian packaging issues (see debian/changelog).
1086
1087 Programmer's notes: 
1088 -------------------
1089
1090 Fixed a build problem so that e2fsprogs would compile with the
1091 --enable-profile option to configure selected.  (Addresses Sourceforge
1092 bug #811408)
1093  
1094 Fixed C++ problems with the ext2fs.h header.  (Addresses Red Hat
1095 Bugzilla Bug #112448)
1096                                                                                
1097 Centralize code which calculates the location of the superblock
1098 and block group descriptors so that it is in a single library routine.
1099
1100 Added two new functions, ext2fs_file_open2() and
1101 ext2fs_inode_io_intern2() which take a pointer to an inode structure.
1102
1103 Fix compile_et to output the correct prototype for
1104 initialize_xxx_err_table_r() in the header file.  (Addresses Debian
1105 bug #204332)
1106
1107 In the lib/et makefile, make sure com_err.info is deleted on "make clean".
1108   
1109 Fix 64-bit warnings in e2fsprogs pass1b by using inttypes.h if
1110 present.  This is for when we try stuffing an int into void * pointer.
1111
1112 Fix type-punning which can cause gcc 3.x to miscompile code by getting
1113 confused about pointer aliasing.  ext2fs_getmem(), ext2fs_free_mem(),
1114 and ext2fs_resize_mem() all now take a 'void *' instead of a 'void
1115 **'.  The EVMS code uses an ugly union approach since we don't want to
1116 modify the EVMS interfaces. 
1117
1118 Make sure all Makefiles use $(MAKE) rather than hardcoded "make", to
1119 aid build process on systems can use invoke GNU make as "gmake".
1120
1121 Added regression testing for mke2fs.
1122
1123 Fixed gcc -Wall nitpicks.
1124
1125 Fixed various compiler warnings.
1126
1127 Add portability fixes for FreeBSD and for using fsctl under Darwin to
1128 support ext2 ioctl's.
1129
1130
1131 E2fsprogs 1.34 (July 25, 2003)
1132 ===============================
1133
1134 Fixed a bug introduced in E2fsprogs 1.30 which caused fsck to spin in
1135 a tight loop while waiting for a child fsck to exit in some cases.
1136 This burns CPU times which slows down the low-level filesystem check.
1137
1138 Added code to mke2fs to assure that the default block size for a
1139 filesystem is at least as big as the sector size of the device, if it
1140 can be determined.
1141
1142 Changed mke2fs and resize2fs to round the default size of a filesystem
1143 to be an even multiple of the VM pagesize in order to avoid a Linux
1144 kernel bug introduced when the storage of the buffer cache was moved
1145 into the page cache.
1146
1147 Mke2fs will warn the user when creating a filesystem with journaling
1148 and a blocksize greater than 4096.  (Addresses Debian bug #193773)
1149
1150 Fixed a bug in resize2fs which caused it to fail on filesystems with a
1151 non-empty bad block list.  Resize2fs now discards any blocks on the
1152 badblock list which are no longer part of the filesystem as the result
1153 of a filesystem shrink.  (Note: this means that shrinking and then
1154 enlarging a filesystem is no longer a reversible operation;
1155 information about bad blocks in the part of the filesystem which is to
1156 be chopped off will be lost.)
1157
1158 Changed resize2fs so the user can use prefixes to specify the units of
1159 the new filesystem size (sectors, kilobytes, megabytes, or gigabytes),
1160 and to make the error and informational messages explicitly display
1161 the blocksize used by the filesystem, in order to avoid confusion.
1162 (Addresses Debian bug: #189814)
1163
1164 Added a new debugfs command, dump_unused, which dumps the contents of
1165 all unused blocks to stdout.  (Useful as an emergency try-to-find
1166 deleted data command.)
1167
1168 Added a new debugfs command, imap, which prints the location of a
1169 specified inode in the inode table.
1170
1171 Fixed a bug in the badblocks program which caused it to use one bit of
1172 randomness in its non-destructive read/write test, instead of using a
1173 full 8 bits of randomness.
1174
1175 Added a new option (-t) to badblocks, which allows the user to control
1176 the test pattern(s) used when checking a disk.
1177
1178 The blkid probe function now more correctly detects UDF filesystems.
1179
1180 Fixed a bug in the blkid library which caused it to not update its
1181 cache if a filesystem changes from having a label to not having a
1182 label.
1183
1184 Fixed a bug in the blkid library wihch could avoid an infinite loop
1185 in blkid_find_dev_with_tag() if /proc is not mounted and there the
1186 /etc/blkid.tab file has not yet been created.
1187
1188 Fixed the badblocks program so that the destructive read/write test
1189 honors the -c option, and to use O_DIRECT when possible to avoid
1190 thrashing the system block buffer cache.
1191
1192 Fixed various NLS issues.
1193  - Added Czech and Swedish translations
1194  - Removed testing NYC translation
1195  - Fixed NLS support for message abbrevations in e2fsck
1196  - Remove de-utf.po, since we shouldn't have two versions using different
1197         charset encodings.
1198  - Used ngettext() (abbreivated with the macro P_(str1, str2, n)) to 
1199         simplify the statistics reporting in e2fsck.
1200
1201 Changed configure.in so that its defaults for *BSD systems no longer
1202 build an fsck wrapper, and not to install in /usr/local by default.
1203
1204 Fixed some minor spelling errors/typo's in e2fsck and the configure
1205 script.
1206
1207 Fixed various Debian packaging issues (see debian/changelog). 
1208
1209 Updated and clarified man pages.  (Addresses Debian Bug #195616)
1210
1211 Programmer's notes: 
1212 -------------------
1213
1214 Fix gcc -Wall nitpicks.
1215
1216 Updated gettext implementation used by e2fsprogs to 0.11.5, and enable
1217 NLS support by default.  (Added partial workaround for gettext/Darwin
1218 incompatibility problems.)
1219
1220 Added full MIT KRB5 and Himdall compaibility support to the com_err
1221 library and the compile_et program.  (Addresses Debian bug #191900)
1222
1223 Added the blkid_known_fstype() function to the blkid library, which
1224 returns true if it is passed a filesystem type which is recognized by
1225 the blkid probing functions.
1226
1227 Improved the documentation for the blkid library.
1228
1229 Added the ext2fs_get_device_sectsize() function the the ext2fs library, which
1230 returns the hardware sector size of a device, if it is available.
1231
1232 Added a dependency in the blkid library's .so file to the uuid
1233 library, since the former uses the latter.  (Addresses Debian bug
1234 #194094)
1235
1236 Added --with-diet-libc and --disable-evms to the configure script.
1237
1238 Fixed a minor memory leak in the badblocks program.
1239
1240 Fixed a portability problem in tune2fs --- not all systems have strptime().
1241
1242 Fixed a portability problem in debugfs with the use of getopt() more
1243 than once.  Old-style BSD, new-style BSD, and Linux C libraries all do
1244 things differently.
1245
1246 Add support Windows support to ext2fs_get_device_size().
1247
1248 Added (normally disabled) debugging code to the Unix I/O manager which
1249 causes it to disable all userspace caching if the NO_IO_CACHE is
1250 defined.
1251
1252 Changed the test I/O manager so it can always be linked into e2fsck,
1253 mke2fs, and tune2fs if enabled via --enable-test-io-debug to the
1254 configure script.  The test I/O manager will only print any debugging
1255 information if the TEST_IO_FLAGS or TEST_IO_BLOCK environment
1256 variables are set, which specifies which I/O operations are logged and
1257 a block number to watch, respectively.  The log messages are sent to
1258 stderr by default, unless a filename is specified via the
1259 TEST_IO_LOGFILE environment variable.
1260
1261
1262 E2fsprogs 1.33 (April 21, 2003)
1263 ===============================
1264
1265 Added a new utility program, logsave, which captures the output of a
1266 command in a log file, even if the containing directory hasn't been
1267 mounted yet (in which case the it saves the output in memory until it
1268 can write out the logfile).  This is useful for capturing the
1269 output of fsck during the boot sequence.
1270
1271 Fixed some portability problems that were causing problems under
1272 the Cygwin32 environment.
1273
1274 Mke2fs now interprets a negative number to the -b option as a minimum
1275 block size.
1276
1277 Fixed a bug in mke2fs which was incorrectly checking the argument to
1278 the -g option if the default block size was used.  (Addresses Debian
1279 bug #188319)
1280
1281 Fsck now explicitly ignores tmpfs and devpts, and it will complain if
1282 it can not find filesystem checkers for jfs, reseirfs, and xfs.
1283
1284 E2fsck now updates the global free block and inode counters from the
1285 block group specific counters quietly.  This is needed for an
1286 experimental patch which eliminates locking the entire filesystem when
1287 allocating blocks or inodes; if the filesystem is not unmounted
1288 cleanly, the global counts may not be accurate.
1289
1290 Imported bug fixes to the EVMS plugin from the EVMS 2.0 tree.  (EVMS
1291 2.0 is not yet supported; this only pulled in the bug fixes: fixed
1292 possible hangs caused by bugs in calling waitpid, and not setting the
1293 pipe to non-blocking mode; also fixed a file descriptor leak; made
1294 sure all functions call log entry/exit functions.)
1295
1296 Badblocks now flushes its output file as bad blocks are discovered.
1297
1298 The uuid library is now more paranoid about assuming the correctness
1299 of the /dev/random device; it mixes in a stream of bytes from
1300 random/srandom, just in case.
1301
1302 Update Debian files to reflect the fact that I am now the Debian
1303 maintainer of e2fsprogs.  Other various Debian-specific packaging
1304 cleanups.
1305
1306 Move the source tarball generation functions from the top-level
1307 makefile to the util/gen-tarball script.  
1308
1309 Updated the Turkish .po translation file.
1310
1311 Added Heimdal and MIT krb5 extensions to the com_err library to make
1312 it more compatible with com_err libraries from those distributions.
1313
1314 Changed dumpe2fs to always display the superblock fields relating to
1315 the journalling and/or directory indexing feature even if those
1316 features are not enabled.
1317
1318 Updated and clarify copyright statement vis-a-vis alpha releases of
1319 e2fsprogs.
1320
1321 The ss library will now try to dynamically link to the readline
1322 library and use it if it is present in the system.  This means that
1323 the debugfs program now has line editing and history features.  The
1324 SS_READLINE_PATH environment variable is used to find a readline or
1325 readline-compatible library.
1326
1327 E2fsck now finds most duplicate filenames (all when rebuilding all
1328 directories via the -D option) and offers to delete or rename
1329 duplicate filenames/directory entries.  (Addresses Debian Bug #176814).
1330
1331 Fix bug in e2image.  When writing out a raw image file, include data
1332 blocks from symlinks that do not store the symlink within the inode.
1333
1334 Fix bug in resize2fs which incorrectly moved the block and inode
1335 bitmaps for sparse superblock filesystems and incorrectly marked
1336 blocks as in use.  (Addresses Debian bug #174766)
1337  
1338 Added a new shared library, the blkid library, which efficiently
1339 allows fsck, mke2fs, e2fsck, and tune2fs to be able to look up LABEL
1340 and UUID filesystem specifiers without needing to search all of the
1341 devices in the system.  Instead, the device is looked up in a cache
1342 file, and then verified to make sure the blkid cache is correct.
1343
1344 Tune2fs and e2label will accept LABEL=xxx and UID=yyy specifiers for
1345 the device name, using the blkid library.  (Addresses Debian bugs
1346 #166048, #179671)
1347
1348 Fsck now supports backslash escapes in /etc/fstab so that \040 can be
1349 used for spaces in device labels.
1350
1351 Removed 32-bit limitations for debugfs's dump command.
1352
1353 If the user specifies a large number of inodes, Mke2fs will
1354 automatically adjust the number of blocks per group to find a valid
1355 set of filesystem parameters.
1356
1357 Add workaround to detect broken MD devices where when some of the
1358 underlying devices are marked read-only, writes to the MD device are
1359 silently dropped.  E2fsck will detect if there is an attempt to run
1360 the journal twice, and abort with an error if this is the case.
1361 (Addresses IBM Bugzilla bug #1226)
1362
1363 E2fsck will print an error if more than one of the -p/-a, -n or -y
1364 options are specified.
1365
1366 E2fsck will fix HTREE corruptions in preen mode, without stopping the
1367 boot process.  This is needed because the 2.4 ext2 filesystem
1368 accidentally had the INDEX_FL backwards compatibility code removed.
1369
1370 Mke2fs no longer creates filesystems with the dir_index flag set by
1371 default; the user has to specifically request it.
1372
1373 Update and clarified various man pages. (Addresses Debian bugs
1374 #173612, #175233, #175113, and #170497, #185945, #188318)
1375
1376 Created man page for the mk_cmds program (from the libss library).
1377
1378 Programmer's notes: 
1379 -------------------
1380
1381 Fix various gcc -Wall nits.
1382
1383 Fixed a lot of portability problems that caused e2fsprogs not to build
1384 successfully under Solaris and Apple/Darwin.
1385
1386 Fixed a Makefile dependency to allow building e2fsprogs using parallel
1387 make jobs.
1388
1389 Changes to create a subset distribution which consists only of the
1390 et, ss, uuid, and blkid libraries.  The configure script and top-level
1391 makefile were changed to support working with a subset distribution.
1392
1393 Removed EXT2_FEATURE_RO_COMPAT_BTREE_DIR mention of since it's not
1394 actually used, and might people who are looking for
1395 EXT2_FEATURE_COMPAT_DIR_INDEX, which is in use.
1396
1397 Updated debian files to fix a number of Lintian warnings.
1398
1399 Updated config.guess and config.sub with newer versions from the FSF.
1400
1401 Removed unnecessary libraries from being linked into the fsck, lsattr, 
1402 chattr, and blkid executables.
1403
1404 E2fsprogs 1.32 (Nomvember 9, 2002)
1405 ==================================
1406
1407 Fixed a bug in the Unix I/O routines which caused needless writebacks
1408 of clean blocks from the unix_io cache (they were erroneously marked
1409 as being dirty, so they were getting written back to disk before
1410 getting evicted from the disk cache).  This was harmless, but it
1411 significantly slowed down e2fsck.
1412
1413 Made some other minor optimizations to the Unix I/O routines to save a
1414 small amount of CPU time.
1415
1416 Updated internationalization files.
1417
1418
1419 E2fsprogs 1.31 (Nomvember 8, 2002)
1420 ==================================
1421
1422 Update EVMS ext2fsim plugin with EVMS 1.2.  (We still support
1423 compiling the fsim plugin with EVMS 1.0 and 1.1.)  Add better error
1424 handling for child process that die unexpectly.  Add a hack to force
1425 mkfs to create filesystems that won't cause problems with hardware
1426 that has 2k or 4k minimum blocksize requirements.  Read from child
1427 processes in non-blocking mode, so that the GUI continues to update.
1428
1429 Fix e2fsck so that it returns the appropriate exit code when the root
1430 filesystem has been changed, so that system's rc scripts will be told that 
1431 the system needs to be rebooted.
1432
1433 Fix a bug in ext2fs_flush/ext2fs_close; when the MASTER_SB_ONLY flag
1434 was set, some of the descriptor blocks that should have been written
1435 out were getting skipped.
1436
1437 Changed e2fsck to force out changes to the backup copies of the
1438 superblock and block group descriptors when important changes are made
1439 to those data structures.
1440
1441 Fix a bug where e2fsck could erroneously mark a filesystem as being
1442 clean if a check of dirty filesystem is interrupted with a ^C.  (Bug
1443 introduced in e2fsprogs 1.28.)
1444
1445 If journal debuging is enabled using --enable-jbd-debug, the debugging
1446 level is now set via the E2FSCK_JBD_DEBUG environment variable.
1447
1448 If byteswapping support is disabled using configure --disable-swapfs,
1449 skip the tests which depend on byte-swapping, so that "make check"
1450 won't bomb out.
1451
1452 Lshattr will now display the indexed directory flag.  Also, some of
1453 the more esoteric compression flags are supressed unless compression
1454 support has been enabled.
1455
1456 Update man pages.
1457
1458
1459 E2fsprogs 1.30 (October 31, 2002)
1460 =================================
1461
1462 When resizing a filesystem, and inodes need to moved, resize2fs will
1463 update the inode's ctime field, and the mtime field of the containing
1464 directories, so that incremental backups using dump/restore will work
1465 correctly.
1466
1467 In order to avoid spurious errors, e2fsck wil check the last
1468 superblock write time to determine whether or not it can safely use
1469 the LOW_DTIME checks to determine if there are inodes on the orphan
1470 inode linked list that had somehow gotten disconnected.  (Addresses
1471 Sourceforge bug #620980)
1472
1473 Partition in /proc/partitions that being with the string "lvm" are
1474 considered real partitions even if they do not end with a number.
1475
1476 Fixed a bug in the the uuid generation function, where if /dev/urandom
1477 is not present, but /dev/random is, and there isn't sufficient
1478 entropy, the get_random_byte function could spin a loop forever.
1479
1480 E2fsck, mke2fs, etc. will now reliably notice when image files are
1481 mounted using the loopback interface.  (Addresses Sourceforge bug
1482 #619119)
1483
1484 When flushing buffers (as is done by badblocks, for example) check to
1485 see if the BLKFLSBUF ioctl succeeds, and if so, avoid using the
1486 FDFLUSH ioctl which causes the MD device driver which causes confusing
1487 syslog messages about obselete ioctl messages.  (Addresses Sourceforge
1488 bug #545832).
1489
1490 Debugfs's write command now checks to see if the destination filename
1491 exists before creating it.  (Addresses Sourceforge bug #478195.)
1492
1493 When installing man pages, search for compressed man pages using all
1494 commonly used compression extensions (i.e., .Z, .gz, .bz2, etc.)
1495
1496 Fixed a bug in fsck where multiple filesystems specified on the
1497 command were not being checked in parallel due to a logic bug
1498 introduced to support the FSCK_MAX_INST environment variable.
1499
1500 We have added a new superblock field, s_mkfs_time, which indicates
1501 when a filesystem was created.  It is set via mke2fs, and printed out
1502 by dumpe2fs, but is not actually touched by the kernel.
1503
1504 Dumpe2fs has been made more robust by not aborting if there is an
1505 error reading the block/inode bitmaps; instead it will still print out
1506 the location of the block/inode bitmaps and inode table.
1507
1508 Add support for the an alternative block group descriptor layout which
1509 allows for on-line resizing without needing to prepare the filesystem
1510 in advance.  (This is the incomat feature flag meta_bg.)
1511
1512 Add support for storing default mount options in the superblock, so
1513 that the filesystem can be mounted with specific mount options without
1514 needing to specify them on the mount command line or in the /etc/fstab
1515 file.
1516
1517 Add support for a new inode flag, which is to be used for indicating
1518 the top of directory hierarchies for the Orlov block allocator.
1519
1520 Fix e2fsck so that if it creates the lost+found directory, it does so
1521 with the more apporpriate permissions of 0700.  Also change
1522 mklost+found so that it also creates the directory 0700.
1523
1524 Fixed format bug in e2fsck if NLS is in use.
1525   
1526 Add a German translation for e2fsprogs's NLS support.
1527
1528 Fixed e2fsck so that it more handles BAD_BLOCK_IN_INODE_TABLE even at
1529 the beginning of the inode table.  This won't matter much, since if
1530 there is a bad block at the beginning of the inode table, the root
1531 directory won't be available.  But at least e2fsck won't crash in this
1532 case.
1533
1534 Fixed endian problems in the htree code for e2fsck and debugfs.
1535   
1536 When byte-swapping a filesystem on a PPC architecture, byte-swap the
1537 bitmaps since the historical big-endian ext2 variant had byte-swapped
1538 bitmaps, and the ext2fs library assumes this.  This fixes the
1539 regression test suite on PPC machines.
1540
1541 Fix e2image so that it handles a bad block in the inode table
1542 appropriately.
1543
1544 E2fsck now uses a more sophisticated algorithm to salvage corrupted
1545 directories that recovers more information in the corrupted directory
1546 block.
1547
1548 E2fsck now performs additional consistency checks on indexed (HTREE)
1549 directories.
1550
1551 Fix bug where efsck might get confused about whether a completely
1552 empty directory block is an empty leaf block or an interior htree
1553 node.  This could cause e2fsck to get confused into think that a valid
1554 indexed directory was corrupted.
1555
1556 E2fsck no longer creates an empty directory entry at the end of a
1557 directory block when optimizing a directory.  This would cause some
1558 earlier versions of the dxdir kernel code to corrupt the directory
1559 when attempting to split a node containing an empty directory entry.
1560
1561 E2fsck could sometimes in rare circumstances leave the indexed flag
1562 set after a small directory was optimized by compressing it instead of
1563 indexing it.  (This should never happen in real life, since
1564 directories that small wouldn't have been indexed, but better safe
1565 than sorry.)
1566
1567 E2fsck now only updates the master superblock in all cases.  This
1568 slightly shortens its run time.
1569
1570 Ext2ed can deal with directory entries of length 0; previously it
1571 would get stuck in an infinite loop.
1572
1573 Fsck now has support for reiserfs volumes when parsing LABEL= and UUID=
1574 specifiers.  (Sourceforge patch #613447)
1575
1576 Badblocks will now work correctly on read-only devices such as
1577 CD-ROM's.  (Sourceforge patch #600451)
1578
1579 Updated and clarified man pages.  (Addresses Debian bug #167108)
1580
1581
1582 E2fsprogs 1.29 (September 24, 2002)
1583 ===================================
1584
1585 Fixed a bug in e2fsck which could corrupt a directory when optimizing
1586 it (via the -D option) or rebuiliding the hash tree index with a 1 in
1587 512 probability, due to a fence post error.
1588
1589 Fixed a bug in the LVM support code which caused LABEL='xxx' not to
1590 work correctly.
1591
1592 Mke2fs now enables the directory indexing flag by default.  (Since
1593 this is a compatible feature flag, it's safe to do so.)
1594
1595 Tune2fs will support setting the directory indexing feature flag.  It
1596 will automatically set up the default hash algorithm and hash seed
1597 fields in the superblock.
1598
1599 If the bone-headed user enters the root filesystem twice in
1600 /etc/fstab, the -R option which skips the root filesystem will skip
1601 all of them.  (Addresses Debian bug #159423).  Note!  This is not a
1602 precedent for dealing intelligently with any other kind of doubled
1603 entry in /etc/fstab!
1604
1605
1606 Programmer's notes: 
1607 -------------------
1608
1609 Removed perror declaration in lib/et/internal.h.  All modern systems
1610 can be expected to define perror() these days.  Besides, the lib/et
1611 code wasn't using perror at all anyway.  :-)
1612
1613
1614 E2fsprogs 1.28 (August 31, 2002)
1615 ================================
1616
1617 Add support for the Hashed-Tree Directory Indexing to e2fsck.  Support
1618 for setting the htree flag is not included yet, although it can be
1619 manually turned on via the debugfs program.
1620
1621 Clarified e2fsck error message which is printed when it cannot find
1622 sufficient contiguous block when relcating filesystem metadata.
1623
1624 Added support for building an EVMS plugin module for ext2/3.  This
1625 module is substantially the same as the EVMS module shipping with EVMS
1626 1.1, with one or two bugfixes.  E2fsprogs can also build this plugin
1627 for use with EVMS 1.0 (which did not include the ext2 plugin module),
1628 if the configure --enable-old-evms flag is given.
1629
1630 Fsck will search through EVMS volumes when trying to resolve
1631 filesystem specifications such as LABEL=xxx or UUID=xxx.
1632   
1633 Added a new utility program, /sbin/findfs, which will return
1634 filesystem specifications such as LABEL=xxx or UUID=xxx, and prints
1635 the device name.
1636
1637 Update and clarified various man pages. (addresses Debian Bug #145044,
1638 #146437, #131350, #151990, #144621, #141938)
1639
1640 If there are no filesystems specified on fsck's command line, fsck now
1641 treat that as if the -As options were given.  Previously it would
1642 simply do nothing.  (Addresses Debian Bug #153102)
1643
1644 Mke2fs no longer treats a failure to be able to clear the MD signature
1645 at the end of the filesystem as a fatal error.  (Addresses Debian Bug
1646 #155007)
1647
1648 The e2p library functions (which are used by lsattr and chattr) now
1649 double check to make sure the file is a regular file or directory
1650 before attempting to use the ext2 ioctls.  Some device drivers
1651 unfortunately respond to the ext2 ioctl's with unknown behaviour.
1652 (Addresses Debian Bug #152029).
1653
1654 The extended attribute handling has been updated to correspond with
1655 the latest V2 bestbits ACL code.
1656
1657 Fixed bug in e2fsck which caused it to not clear the dtime field when
1658 processing truncated inodes on the orphan list.  This could cause data
1659 loss(!) if a filesystem is rebooted before a truncate has been
1660 committed.
1661
1662 E2fsck now uses red/black trees in pass1b, which removes some O(n**2)
1663 algorithms.  This makes e2fsck much faster in the case of severely
1664 corrupted filesystems where a large number of blocks are claimed by a
1665 large number of inodes.  (Thanks to the 2.5 IDE device driver for
1666 inspiring this work.)
1667
1668 Resize2fs has been significantly sped up when shrinking and expanding
1669 a filesystem by a very small number of blocks (for example, when EVMS
1670 is converting a partition to be an EVMS legacy volume).
1671
1672 Added a new option to e2fsck, -D, which will optimize or compress all
1673 of the directories in the filesystem.
1674
1675 E2fsck now catches SIGINT and SIGTERM to make sure it will can
1676 properly clean up and only exit at safe points.  Fsck will pass
1677 SIGINT/SIGTERM to its child processes, and wait until they have all
1678 exited before it exits.
1679
1680 The uuid parsing code in the uuid library now properly complains when
1681 an illegally formated uuid is presented to it.  (Addresses Debian bug
1682 #152891)
1683
1684 Restrict use of the 2.4 setrlimit ABI f*ckup to kernels between 2.4.10
1685 and 2.4.17, since the workaround can cause problems when using a 2.4
1686 kernel with an old version of glibc built with the 2.2 headers.
1687
1688 Fixed a bug in mke2fs where it wasn't properly clearing the initial
1689 superblock used by other filesystems.  (Addresses Debian bug #147256.)
1690
1691 Added support for the synchronous directory feature written by Andrew
1692 Morton.
1693
1694 The debugfs program can delete directories using the rmdir command.
1695
1696 Add support for 8k and 16k filesystems (for systems with page sizes
1697 that are greater or equal to 8k or 16k, respectively).  Note that
1698 these filesystems can not be mounted on x86 systems, or other systems
1699 with only 4k page sizes, due to limitations in the current Linux VM
1700 code.
1701
1702 Resize2fs requires that the filesystem state be valid and have no
1703 errors; otherwise, e2fsck -f must be run first.  (Previously it simply
1704 required that the last fsck time be greater than the last mount time.)
1705
1706 Configure now defaults the man pages directory to /usr/share/man on
1707 Linux systems.
1708
1709 E2fsck now offers to truncate inodes which contain too many blocks (so
1710 that i_blocks would overflow.  Also fixed handling of large sparse
1711 files.
1712
1713 E2fsck now more completely checks for symlink validity, including
1714 requiring NULL termination and length checks.
1715
1716 E2fsck will offer to try forcing a disk write to remap a bad block
1717 after finding a read error when reading a filesystem metadata block.
1718
1719 Fixed a bug in debugfs which caused the -b and -s options to crash
1720 debugfs, as well as breaking the testb, setb, and clearb functions.
1721
1722 Added a bmap command to debugfs which calculates the logical to
1723 physical block mapping for a particular inode.
1724
1725 Fixed a bug in code which checked to see if a device was mounted which
1726 sometimes (rarely) failed in the case of a plain file.
1727
1728 Fixed a bug in resize2fs where when it reported an error, it would
1729 print a message erroneously indicating that the filesystem had been
1730 resized before it aborted.
1731
1732 When resizing a plain file which is smaller than the requested size,
1733 resize2fs will attempt to extended the file so that programs like
1734 e2fsck will not complain that the file is too small.
1735
1736 Resize2fs will print the actual new size of the filesystem when it is
1737 finished resizing.
1738
1739 Fixed a bug in debugfs where "ls -l" would report incorrectl file type
1740 information on big-endian systems.
1741
1742
1743 Programmer's notes:
1744 -------------------
1745
1746 Fixed collisions with C++ reserved words.
1747
1748 Added portability fixes for building e2fsprogs on the HURD and AIX.
1749
1750 Added the ext2ed program for creation of test cases.  (ext2ed has many
1751 limitations and bugs which make it unsuitable for production use.)
1752
1753 The ext2fs_read_dir_block2 and ext2fs_write_dir_block now take a new
1754 flag, EXT2_DIRBLOCK_V2_STRUCT, which will will reverse when the
1755 name_len field is byte swampped on big-endian machines, since in the
1756 V2 structure, name_len is a char field which is doesn't need to be
1757 byte swapped --- except if an old-style kernel had byte-swapped the
1758 name_len field as part of the V1 structure.
1759   
1760
1761 E2fsprogs 1.27 (March 8, 2002)
1762 ==============================
1763
1764 The warning messages for mke2fs now go to standard error.
1765
1766 Fixed to make sure "make check" runs all of the test programs with
1767 LD_LIBRARY_PATH set, so that we test the libraries in the build tree.
1768
1769 The mke2fs program checks the boot sector for the BSD disk label, and
1770 avoids erasing it if it is there.
1771
1772 Fixed a bug in e2fsck which caused it to core dump if the journal
1773 inode was missing when it was supposed to be there.
1774
1775 E2fsck now prints ranges in pass 5 when printing deltas for the block
1776 and inode bitmaps.
1777
1778 Debugfs's "ls -l" command now will print out the file type information
1779 in the directory entry.
1780
1781 Create man pages and hard links for fsck.ext3 and mkfs.ext3.  If
1782 mke2fs is invoked as mkfs.ext3, create the filesystem with a journal.
1783
1784 Debugfs can now examine the experimental directory indexing
1785 information.
1786
1787 Fixed bug in debugfs which caused it to core dump if modify_inode is
1788 called without an open filesystem.
1789
1790 The debugfs lsdel command now runs its output through a pager first.
1791
1792 When installing manual pages, remove the compressed manual pages first.
1793
1794 Synchronized with Debian's packaging information for e2fsprogs-1.26-1.
1795
1796 Fix the 2.4 resource limitation workaround introduced in 1.26 which
1797 actually broke things on mips32, sparc32, and Alpha platforms.
1798
1799 Updated the I18N code so that calls to setlocate(LC_CTYPE, 0) are made
1800 (which is required by the newer libintl libraries).
1801
1802 Programmer's notes:
1803 -------------------
1804
1805 Fixed various gcc -Wall complaints.
1806
1807 Fixed a few memory leaks in the e2fsck journaling code, and in the
1808 ismounted code checking for a swap device.
1809
1810 Add new inode I/O abstraction interface which exports an inode as
1811 an I/O object.
1812   
1813 Exported ext2_file_flush as a public interface.
1814   
1815 In ext2_file_write, we now mark the buffer void * argument as a const, since ext2_file_write doesn't modify the buffer.
1816
1817 Lots of small random portability fixes to make e2fsprogs build under
1818 AIX --- even without the 5L compatibility toolkit, and even using the
1819 uber-crippled AIX native C compiler.
1820
1821
1822 E2fsprogs 1.26 (February 3, 2002)
1823 =================================
1824
1825 Dumpe2fs will keep going now if the bad block inode can't be read.
1826 (Previously it stopped with a fatal error.)
1827
1828 E2fsck will now give an opportunity to run the journal even if the
1829 recovery flag is not set.  This is the default behaviour if e2fsck is
1830 using a backup superblock, since the needs_recovery flag will never be
1831 set in the backup superblock copies.
1832
1833 E2fsck now automatically finds the backup superblock/group descriptors
1834 even when the primary superblock is completely destroyed for 2k and 4k
1835 filesystems.  (Previously it just guessed/assumed that we were dealing
1836 with a 1k filesystem in that case, and users had to manually specify
1837 the backup superblock number.)
1838
1839 Fixed a bug in e2fsck where it dereferences a null pointer when there
1840 is a problem opening a filesystem in preen mode.
1841
1842 E2fsck now handles external journals correctly; previously it trashed
1843 the external journal device if the journal needed to be replayed.
1844
1845 Work around ulimit incompatibility problem caused by recent 2.4
1846 kernels; the unix IO module will automatically try to set any resource
1847 limits to be infinite on startup.
1848
1849 Fixed a bug in e2fsck where it wasn't allocating a new block or inode
1850 bitmap if it wasn't present and the blocksize was 2k or 4k.
1851  (Addresses Debian Bug #116975)
1852
1853 E2fsck will check and fix botched ext3 V1 to V2 superblock updates by
1854 clearing the new V2 fields if they do not make sense or if the ext3
1855 superblock is version 1 superblock.
1856
1857 E2fsck will automatically relocate the ext3 journal from a visible
1858 file (i.e., /.journal) to an hidden inode if the filesystem has been
1859 opened read/write.  This allows the users to add a journal while the
1860 filesystem is mounted, but the next time the system is rebooted, the
1861 journal file will disappear.  This avoids problems with backups,
1862 stupid operators with superuser bits, etc.
1863
1864 Fix a bug in fsck where it would not support a filesystem type of
1865 "auto" if the device was specified in terms of LABEL=xxx or UUID=xxx.
1866
1867 Fsck now supports fstab entries of the form "ext3,ext2".  It will also
1868 automatically identify reiserfs filesystems.
1869
1870 The number of processes spawned by fsck can now be limited using the
1871 FSCK_MAX_INST environment variable.
1872
1873 Fsck now searchs the LVM proc hierarchy to find logical volumes which
1874 should be searched for  UUID and label information.
1875
1876 Work around a bug in 2.4.10+ kernels by trying to unset the filesize
1877 limit if at all possible, when opening a block device.  (The filesize
1878 limit shouldn't be applied against writes to a block device.)
1879
1880 In mke2fs and e2fsck, specifying the -c option twice will now do
1881 a read/write test on the disk.  Update the man pages to encourage
1882 using the -c option, and to discouraging running badblocks separately,
1883 since users tend to forget to set the blocksize when running 
1884 badblocks.
1885
1886 Mke2fs now automatically clears the immutable attribute on a
1887 pre-existing .journal file left over from a previous failed attempt to
1888 add a journal to an alreadyy-mounted filesystem.
1889
1890 Fixed mke2fs's exit codes to consistently indicate when the mke2fs
1891 operation failed.
1892
1893 Mke2fs now creates the lost+found directory with permissions of 0700,
1894 so that files that had previously lived in protected directory are
1895 safe if they get dropped in lost+found and the system administrator
1896 doesn't deal with immediately.  (Addresses Debian #bug 118443)
1897
1898 Mke2fs and e2fsck (and all programs that use the
1899 ext2fs_check_if_mounted function) will now properly identify that a
1900 device is mounted, even in cases where devfs has confused things with
1901 multiple devices names with the same identity, or if a dim-witted
1902 system administrator has done something stupid like creating device
1903 file aliases in their home directory.  Also now checks for swap devices
1904 by using /proc/swaps.  (Addresses Debian bug #106622)
1905
1906 Added a new option (-T) to tune2fs which sets the time a filesystem
1907 was last checked.
1908
1909 Speed up e2image when creating sparse raw image files by optimizing
1910 away excess lseek() system calls.
1911
1912 Fix support of large (> 2GB) files when used as a filesystem in
1913 mke2fs, tune2fs, debugfs, and findsuper.
1914
1915 Debugfs's stat and icheck commands now properly deals with large (>
1916 2GB) files.
1917
1918 Debugfs's set_super_value command now prints out the list of valid
1919 superblock fields which can be set using the command.
1920
1921 Debugfs's rm and kill_file command now updates the superblock free block
1922 and inode counts, thus keeping the filesystem consistent.
1923
1924 Debugfs's lsdel command now takes an optional argument which allows
1925 the user to only see the most recently deleted files.
1926
1927 A new command (undel) was added to debugfs which automates
1928 undeleting a deleted inode and linking it back to a directory.
1929
1930 Debugfs's ls command now takes a new option, -d, which lists 
1931 deleted directory entries.
1932
1933 Debugfs's testb, freeb, setb, and find_free_block commands now take an
1934 optional count argument.
1935
1936 Add support for a new ext2 file attribute, EXT2_NOTAIL_FL, which will
1937 be used to signal that a particular inode should not be eligible for
1938 tail-merging --- this is needed for programs like LILO.
1939
1940 The findsuper (an unreleased, uninstalled utility program) has been
1941 improved to add extra validity checks and to add a progress meter.
1942 (It is still an unsupported program; the officially supported way to
1943 recover from a trashed partition table is to use gpart; findsuper is
1944 for wizards only.  :-)
1945
1946 Debugfs was fixed to compile with "configure --disable-swapfs".
1947
1948 Cleaned up various manual pages.   (Addresses Debian bug #119624, #120171)
1949
1950 Added new translation file for Turkish.
1951
1952 Programmer's notes:
1953 -------------------
1954
1955 Fix general gcc -Wall complaints.
1956
1957 E2fsprogs (mostly) works with the dietlibc.
1958
1959 The programming texinfo file has been expanded to include description
1960 of additional libext2fs functions.  (Still not compeltely done, but a
1961 lot of the more important functions have been documented.)
1962
1963 Added a umask structure to struct_ext2_filsys, which currently only
1964 modifies the behaviour of ext2fs_mkdir(), but if we add any file
1965 creation functions to libext2fs, we should also make sure they respect
1966 the umask setting.
1967
1968 The build-rpm script was fixed to be a bit more safe.
1969
1970 The tests' Makefile now has a way of automating test case creation 
1971 for e2fsck, using "make testnew".
1972
1973 Created a new function, ext2fs_dir_iterate2 which passes more
1974 information to the callback function (identical to the one used by
1975 ext2fs_dblist_dir_iterate).  The directory iterator functions take a
1976 new flag, DIRENT_FLAG_INCLUDE_REMOVED, which will return deleted
1977 directory entries.  If the directory entry is deleted, the callback
1978 function will be called with the entry paraemter set to
1979 DIRENT_DELETED_FILE.
1980   
1981 Added new functions, ext2fs_inode_alloc_stats and
1982 ext2fs_block_alloc_stats, which takes updates block/inode allocation
1983 statistics in the bitmaps, block group descriptors, and superblock
1984 when inodes or blocks are allocated or deallocated.
1985
1986
1987 E2fsprogs 1.25 (September 20, 2001)
1988 ===================================
1989
1990 This is primarily a bug-fix release; no new features were added, but
1991 there are a number of embarassing bug fixes and cleanups applied.
1992
1993 Fix a bug mke2fs which causes stack garbage to be written to disk when
1994 zapping disk sectors.  (This bug could cause mke2fs to core dump for
1995 some kernels, I suspect with security enhancement patches.)
1996
1997 Remove unneeded #include of <linux/config.h> which was breaking
1998 building e2fsprogs on the Hurd.  (Addresses Debian bug #112414.)
1999
2000 Updated tune2fs man page to reflect the fact that adding or removing a
2001 journal doesn't require running e2fsck.
2002
2003 Remove use of AC_REQUIRE from autoconf which had been used to prevent
2004 AC_CANONICAL_HOST from being called twice; unfortunately this causes
2005 recent autoconf to bomb out since they don't allow AC_REQUIRE to be
2006 used outside of autoconf macros.  Fortunately, it doesn't seem to be
2007 necessary any more, anyway.
2008
2009 E2fsck will now not fall back to an alternate superblock if the user
2010 specifies the superblock location explicitly on the command-line.
2011 This allows easier recovery from a situation where the primary
2012 superblock and block groups are slightly corrupted, but the backup
2013 superblocks are completely broken.  
2014
2015 Fix problem which caused compile_et and mk_cmds to blow up if
2016 e2fsprogs was in a directory with a pathname that contained spaces.
2017
2018 We are now more paranoid about checking the entry in /etc/mtab to make
2019 sure the filesystem is really mounted, since some broken distributions
2020 (read: Slackware) don't initialize /etc/mtab before checking non-root
2021 filesystems.  (Slackware also doesn't check the root filesystem
2022 separately, and reboot if the root filesystem had changes applied to
2023 it, which is dangerous and broken, but there's nothing I can do about
2024 that.)
2025
2026 Make UUID library C++ friendly by adding appropriate extern "C"
2027 declarations and using const in the function declarations.
2028
2029 Fix up the com_err texinfo file so that it can product a valid info
2030 file (previously, it could only be used to generate paper
2031 documentation using texinfo.tex).
2032
2033
2034 E2fsprogs 1.24a (September 2, 2001)
2035 ===================================
2036
2037 Fix brown-paper bug in mke2fs which caused it to segfault when
2038 printing the version string.
2039
2040
2041 E2fsprogs 1.24 (August 30, 2001)
2042 ================================
2043
2044 Revert the BLKGETSIZE64 support, since for some distributions, this
2045 ioctl has been used by an unofficial kernel patch to update the last
2046 sector on the disk, and this was causing disk corruption problems as a
2047 result.
2048
2049 Mke2fs is now more careful about zapping swap space signatures and
2050 other filesystem/raid superblock magic values so that programs like
2051 mount who try to use hueristics to determine the filesystem type of a
2052 partition are less likely to be confused.
2053
2054 E2fsck will no longer complain if the the mode of EXT2_RESIZE_INO is a
2055 regular file (since Andreas Dilger's on-line resizing tools will set
2056 its mode bits).
2057
2058 Fixed some minor texinfo, man pages nits for spelling errors,
2059 texinfo warnings, etc.  (Addresses Debian bug #110621.)
2060
2061 E2fsprogs program no longer print the filesystem version number
2062 (i.e. 0.5b), since it only confuses people and doesn't serve any real
2063 purpose.
2064
2065 E2fsck will once again compile under libc5, since it will supply its
2066 own version of strnlen if necesssary.
2067
2068 mke2fs and tune2fs will allow the use of UUID= or LABEL= specifiers
2069 when specifying the external journal device.  tune2fs will also search
2070 devices looking for the externla journal debice when removing.  
2071
2072 E2fsprogs 1.23 (August 15, 2001)
2073 ================================
2074
2075 Add initial support for extended attributes (EA); e2fsck will
2076 correctly handle a filesystem with EA's and check the EA blocks for
2077 corruptions.
2078
2079 E2fsck's symlink sanity checking has been cleaned up.  It now checks
2080 the i_size value of fast symlinks, and checks for immutable flags
2081 being set of symlinks, etc.
2082
2083 E2fsck now offers to clear inodes which are special files that have a
2084 non-zero i_blocks or i_size field.  (The i_size field check was in the
2085 previous version of the code, but due to a bug it didn't offer to
2086 clear the inode unless i_size and i_size_high were both non-zero.)
2087
2088 E2image can now create "raw" image files, which only contain the
2089 filesystem metadata placed in a spare file so that e2fsck, dumpe2fs,
2090 debugfs, etc., can be run directly on the raw image file.
2091
2092 Add support for the 64-bit block device patches.
2093
2094 Fixed bugs in creating external journals with a 1k blocksize.
2095
2096 Add initial support for external journals (so long as the external
2097 journal only supports a single filesystem) in e2fsck.
2098
2099 Remove requirement for needing to run fsck on a filesystem after
2100 removing a journal (either internal or external).
2101
2102 The man pages now document how to create and manage external journals.
2103
2104 Speed up the check of an ext3 filesystems by avoiding a needless flush
2105 of all of the superblock and block group descriptors.
2106
2107 Speed up creating an internal journal using tune2fs in the case where
2108 the filesystem has a lot blocks already allocated.
2109
2110 Tune2fs has been fixed to make sure that only error messages go to
2111 stderr, and normal message go to stdout. (Addresses Debian bug #108555)
2112
2113 Fixed a minor bug in mke2fs; if -O none is passed to mke2fs, it will
2114 now not set the sparse_super feature.  (Addresses Debian bug #108165)
2115
2116 Add support in fsck for the filesystem type "auto".
2117
2118 Fsck -A will not try to interpret device names for filesystems which
2119 have a pass number is 0.  (Addresses Debian bug #106696).
2120
2121 Fsck prints a warning message if now valid filesystems are passed to
2122 it.  (Addresses Debian Bug #107458.)
2123
2124 E2fsck now gives an explicit warning if there filesystem still has
2125 errors at the end of the run. (Addresses Debian bug #104502)
2126
2127 E2fsck will set the EXT2_ERROR_FS flag if the journal superblock
2128 reflects an error.  E2fsck will also not run the orphan list if the
2129 filesystem contains errors, since the orphan list might be corrupted.
2130
2131 E2fsck now prints the number of large files when given the -v option.
2132
2133 Fixed minor memory leaks in e2fsck.
2134
2135 Some minor man pages updates. (Addresses Debian bug #30833, #108174)
2136
2137
2138 E2fsprogs 1.22 (June 22, 2001)
2139 ==============================
2140
2141 Fixed a bug in e2fsck's handling of orphan inodes which are special
2142 files (i.e., block/character device files, named FIFO's, etc.).
2143
2144 Fixed a bug accidentally introduced in e2fsprogs 1.21 which caused
2145 tune2fs to fail at adding a journal to a mounted filesystem.
2146
2147 Fixed a few big-endian bugs in e2fsprogs
2148         * The directory block functions were accidentally reporting
2149                 some directories as corrupted when they weren't.
2150         * If e2fsprogs is compiled --disable-swapfs, the C language 
2151                 equivalents weren't being included for big-endian platforms.
2152                 (Fixes Debian bug #101686).
2153
2154 Fixed a Hurd compilation problem.  (Addresses Debian bug #101361)
2155
2156 Programmer's notes:
2157 -------------------
2158
2159 Use platform independent method of defining the BLKFLSBUF and FDFLUSH
2160 ioctls, and allow them to be defined for non-i386 platforms.
2161
2162 The uuid.h header file is now protected against multiple inclusions.
2163
2164 E2fsprogs is now being developed using BitKeeper.  Changed the test
2165 scripts to deal with BK's stripping CR characgters from text files,
2166 and changed the top-level Makefile.in to avoid including BitKeeper
2167 files when generating the source tarball.
2168
2169
2170 E2fsprogs 1.21 (June 15, 2001)
2171 ==============================
2172
2173 Added new configure flags which allow a subset e2fsprogs to be built;
2174 this is most useful for boot floopies, since the resulting shared
2175 libraries and programs are slimmed down by removing features that
2176 aren't necessary for a boot floppy.  The new flags that were added
2177 are: --disable-swapfs, which removes support for byte swapping old
2178 legacy PPC/68k filesystems, --disable-debugfs, which removes support
2179 for debugfs from the libext2fs library, --disable-imager, which
2180 removes support for the e2image program, and --disable-resizer, which
2181 removes support for resize2fs.
2182
2183 E2fsck now prints the number of mounts or days elapsed since the last
2184 check when e2fsck is forced to check an otherwise clean filesystem.
2185
2186 Tune2fs now prints an informative message about how often a filesystem
2187 will be checked when adding a journal to the filesystem, to remind the
2188 user that he/she may want to adjust those parameters using tune2fs
2189 -c/-i.
2190
2191 Worked around hurd brain-damage which causes e2fsck to sometimes
2192 believe a filesystem is the root filesystem based on device numbers
2193 (since Hurd doesn't have dev_t's, which is arguably a POSIX.1
2194 violation).
2195
2196 Fixed a bug introduced in 1.20 which caused e2fsck to abort with an
2197 erroneous error with the -F option was specified.
2198
2199 Fixed a ext3 recovery bug in the revoke handling; synchronized with
2200 ext3 0.7a.
2201
2202 Fixed two bugs in e2fsck's handling of dup block handling, dealing
2203 with relatively uncommon edge cases: a directory with an indirect
2204 block which is claimed by another file, and when the last inode in the
2205 filesystem has blocks claimed by another file.
2206
2207 E2fsck now checks to see if the i_size field of a fast symlink is too
2208 big, and offers to clear the symlink if so.
2209
2210 E2fsck now checks to see if i_size_high of special files is non-zero,
2211 and offers to clear i_size_high.
2212
2213 Fix e2fsck's handling of incompatible journal flags so that the user
2214 has chance to abort, and then has the option to clear out the journal
2215 entirely.  (Addresses Debian bug #98527.)
2216
2217 Fixed a bug in fsck which could cause it to core dump if a mix of
2218 standard and non-standard device names are used in /etc/fstab.
2219 (Debian bug #100559)
2220
2221 Fixed a bug in debugfs which caused read errors when copying a file to
2222 not be noticed.
2223
2224 The debugfs set_super_value command can now modify the s_lastcheck field.
2225
2226 Fixed a bug in lsattr and chattr which was accidentally introduced in
2227 1.20 to support > 2GB files; both lsattr and chattr wasn't reading
2228 directories correctly because the change modified the layout of struct
2229 dirent to be incompatible with the libe2p shared library.
2230
2231 Cleaned up the mke2fs manual page and included a discussion about why
2232 it's good to periodically check the filesystem even when journaling is
2233 enabled.
2234
2235 Programmer's notes:
2236 -------------------
2237
2238 Fix general gcc -Wall complaints.
2239
2240 The types needed by the ext2 header files are now provided by
2241 lib/ext2fs/ext2_types.h, instead of include/asm/types.h.
2242
2243 Integers are now preferred to longs when trying to find a 32-bit type
2244 in ext2_types.h.  Also, if linux/types.h has already been defined,
2245 don't try to redefine the types.
2246
2247 Fixed make depend script so that it automatically corrects the
2248 pathname cleanups performed by make -M, so I don't have to fix them up
2249 by hand.
2250
2251 Fixed the d_loaddump test case to be more robust, and not depend on
2252 bash'isms.
2253
2254 Removed debugfs's dependence on pread(), which was accidentally
2255 intrudced in e2fsprogs 1.20
2256
2257 Fixed a performance bug in the libext2fs's icount routine; the size
2258 estimate of the icount array was incorrectly being calculated.
2259
2260 Removed use of the badblocks compatibility functions in the e2fsprogs
2261 programs.
2262
2263 Added paranoia code which protects against strange cases where /etc
2264 isn't on the root filesystem, or if /etc/mtab doesn't exist.
2265
2266 The header file ext2_types.h is now installed.
2267
2268 Autoconf is used to determine when we are on big-endian machines,
2269 instead of doing run-time tests, to save a few bytes of code.
2270
2271 The ext2fs_mark_generic_bitmap and ext2fs_unmark_generic_bitmap
2272 functions are no longer inline functions, which saves space and
2273 doesn't really cost any real performance.
2274
2275 The ext2fs library no longer depends on the e2p library.  (What need
2276 there was of it --- namely, fsetflags, was coded in-line).
2277
2278 Fixed the makefile so that lib/ext2fs/ext2_types.h is generated even
2279 when the user is stupid and tries compiling the package using "make
2280 install" as root.
2281
2282 Miscellaneous code cleanups:
2283         * Added missing files from Makefile.in's SRCS file, so that 
2284                 their dependencies would be properly calculated.
2285         * Removed redundant code
2286         * Fixed comments in code
2287         * Removed no-longer unneeded argsused #pragma.
2288
2289
2290 E2fsprogs 1.20 (May 20, 2001)
2291 =============================
2292
2293 Add support for replaying the ext3 journal purely in user mode,
2294 including handling the orphaned inode list.  Used code contributed by
2295 Andreas Dilger, with bug fixes and the orphaned inode handling done
2296 by Theodore Ts'o.
2297
2298 The mke2fs and tune2fs programs can create or modify a filesystem to
2299 include an ext3 journal.  Tune2fs also can be used to remove an ext3
2300 journal from a filesystem.
2301
2302 E2fsck will now check for the existence of a linked list of orphan
2303 inodes in the superblock, and clear those inodes before starting the
2304 rest of the filesystem check (but after the journal playback).
2305
2306 E2fsck now validates the file descriptor passed to the -C option,
2307 which saves against the completion bar getting written to an
2308 unexpected location, such as the disk being checked.  (Debian
2309 bug/wishlist #55220)
2310
2311 E2fsck will now bump the filesystem revision number from zero to one
2312 if any of the compatibility bits are set.
2313
2314 Fixed a bug where a badly corrupted directory on a big endian system
2315 could cause e2fsck to die with a bus error.  The
2316 ext2fs_read_dir_block() and ext2fs_process_dir_block() functions in
2317 the ext2 library now does alignment sanity checks on the rec_len field
2318 of the directory entry before using it.
2319
2320 The ext2 library has been enhanced to make tune2fs safe to run on
2321 mounted filesystems.  (Users could usually get away with using tune2fs
2322 on mounted filesystems before, but with the advent of ext3 and
2323 journaling, it became important to make tune2fs was *really* safe for
2324 use even when the filesystem being modified is mounted.)  E2label is
2325 now implemented by tune2fs using an argv[0] dispatch, so that e2label
2326 is also now safe for use on mounted filesystems.
2327
2328 Added a new program, e2image, which creates a backup of critical ext2
2329 filesystem data structures.  The generated image file can be examined
2330 using dumpe2fs and debugfs.  In the future, e2fsck will be able to use
2331 the image file to help recover very badly damaged filesystems.
2332
2333 Fixed a number of LFS bugs in e2fsck; very, very large (> 2**42) files
2334 no longer cause e2fsck to bomb out.  Also treat files > 2GB as being
2335 large file when deciding whether or not the filesystem has large files.
2336
2337 Fixed lsattr and chattr so that they work correctly on large files.
2338 (Fixes Debian bug #72690.)
2339
2340 Removed limitation in get_device_size() which imposed a one terrabyte
2341 filesystem limitation.  (Most 2.2 kernels still have a signed int
2342 problem which cause 1 TB block device limitation.  Fortunately, the
2343 kernel patches to fix this are much easier than fixing the 2TB
2344 limitation in the kernel.  :-)
2345
2346 A max_mount_count of zero is now treated as if no mount count were
2347 set.  (Previously, no mount count was indicated by using -1, and a
2348 mount count of zero caused e2fsck to always be run.)
2349
2350 Mke2fs supports two new filesystem types largefile and largefile4.
2351
2352 Mke2fs now adds some randomness in s_max_mount_count so that multiple
2353 filesystems won't be all checked at the same time under normal
2354 operations.
2355
2356 Fixed bug in the progress bar printing code which could cause e2fsck
2357 to core dump on an illegal filesystem.
2358
2359 Fixed bug in fsck which could allow more than one instance of e2fsck
2360 to be printing a progress bar.  (Debian bug #65267)
2361
2362 Fsck using a UUID or a LABEL specifier will work even if devfs is
2363 compiled into the kernel and not mounted.  If the pathnames in
2364 /proc/partitions are incorrect, fsck will search /dev for the correct
2365 device (using the new ext2fs_find_block_device library function).
2366 Fsck now also checks the RAID devices first so that they are properly
2367 found when they are in use.  Support has also been added to support
2368 additional IDE disks and the DAC 960 device names.  (Debian bug #94159)
2369
2370 Fixed a bug in fsck which caused it not deal properly with 16
2371 byte long filesystem labels.
2372
2373 Fsck's -t option has been made a lot more flexible.  The semantics for
2374 what happens if a comma-separated list to fsck has been regularized,
2375 and it is now possible to filter what filesystems will get checked
2376 based what is in the filesystem's fstab entry's option field.  (Debian
2377 bug #89483.)
2378
2379 The dumpe2fs program can now print out the group description
2380 information in hex, and also prints the location of the superblock and
2381 block group descriptor for those block groups that have them.
2382
2383 Mke2fs now clears the ext2 superblock before it starts creating a
2384 filesystem, so that the superblock magic number is only written if the
2385 filesystem creation process successfully completes.
2386
2387 The debugfs program's stat command now pretty-prints the blocks used
2388 by an inode so that it's more compact and informative.
2389
2390 The debugfs stats command now uses the same libe2p code (which is used
2391 by dumpe2fs) to print the superblock header information.  This is more
2392 complete, and it avoids a bit of code duplication.
2393
2394 Added a new debugfs command, set_super_value (ssv) which allows the
2395 user to set arbitrary superblock fields.
2396
2397 Debugfs was extended to support inode numbers in hex (by prefixing
2398 them with 0x), and so that modify_inode can set the inode generation
2399 number.  Also, there is now a new function command called logdump
2400 which will dump an ext3 journal.
2401
2402 Fixed a bug in debugfs so that quitting out of the pager doesn't kill
2403 debugfs.
2404
2405 Debugfs's dump command now stops immediately upon reporting a disk
2406 read error.  (Fixed a bug in ext2fs_file_read library routine which
2407 caused debugfs not to stop.)  (Debian bug #79163)
2408
2409 On systems with /proc/mounts (mainly Linux systems), /proc/mounts is
2410 checked before /etc/mtab is used, since /proc/mounts is more likely to
2411 be accurate.
2412
2413 Added portability fixes for Solaris and Linux/ia64.
2414
2415 Various manual pages were clarified and cleaned up.  (Fixed debian
2416 bugs #63442, #67446, and #87216)
2417
2418
2419 Programmer's notes:
2420 -------------------
2421
2422 The e2fsck message printer now supports %Iu and %Ig, which will print
2423 out the inode's user and group owners, respectively.
2424
2425 E2fsprogs now includes its own version of include/linux/ext2_fs.h, so
2426 that no longer dependent on the system having the correct version of
2427 the kernel header files.
2428
2429 Added a new function to libext2, ext2fs_find_block_device(), which
2430 searches the system (i.e., /dev, /devfs, /devices) for a pathname to a
2431 device given its device number.
2432
2433 Added a new function to libext2, ext2fs_sync_device, which centralizes
2434 all of the places which might try to use the BLKFLSBUF or FDFLUSH
2435 ioctls (and usually failing to define them since the system header
2436 files don't usually do this for us, and we're trying to avoid usage of
2437 kernel include files now).
2438
2439 Added new utility programs in tests/progs: random_exercise and
2440 hold_inode.  They aren't built by default; they're useful for
2441 exercising ext3 filesystem code.
2442
2443 Added a new ext2 filesystem flag, EXT2_FLAG_SUPER_ONLY, which causes
2444 the filesystem close functions to only update the superblock, and to
2445 not touch the block group descriptors.  Needed by tune2fs when
2446 modifying a mounted filesystem.
2447
2448 Got rid of struct ext2fs_sb and replaced it with the standard struct
2449 ext2_super_block from include/linux/ext2_fs.h.  Note: this may break
2450 source (but not binary) compatibility of some users of the ext2
2451 library.  Those applications should just simply do a global search and
2452 replace of struct ext2fs_sb with struct ext2_super_block, and include
2453 the new header file <ext2fs/ext2_fs.h> which defines it.
2454
2455 The ino_t type has been renamed ext2_ino_t to protect applications
2456 that attempt to compile -D_FILE_OFFSET_BITS=64, since this
2457 inexplicably changes ino_t(!?).  So we use ext2_ino_t to avoid an
2458 unexpected ABI change.
2459
2460 The Makefiles have been reworked so that "make check" can be run from
2461 the top-level Makefile.
2462
2463 Fix general gcc -Wall complaints and removed dead code.
2464
2465 Remove use of NOARGS, because we assume everyone does ANSI C these
2466 days.
2467
2468 Added build-rpm script from sct.
2469
2470 New functions ext2fs_image_{inode,super,bitmap}_{read,write} added 
2471 to support e2image.
2472
2473 New function ext2fs_flush_icache which must be called if the
2474 application program modifies the inode table blocks without going
2475 through ext2fs_write_inode() interface.
2476
2477 New ext2fs_check_mount_point() function, which will return the mount
2478 point of a device if mounted.
2479
2480 The io_channel abstraction now has an optional interface,
2481 io_channel_write_range, which allows specific byte ranges to be
2482 written.  
2483
2484 The unix_io IO channel now supports write-through caching, so that
2485 journal creation is more efficient.
2486
2487 Added x86 assembly language routines to support byte swapping, to
2488 reduce executable size.
2489
2490 Fixed bug in the utility program subst so that it's possible to
2491 replace a substitution variable with a zero-length string.
2492
2493 Fixed numbering e2fsck pass1 problem numbers; an extra zero had
2494 slipped into some of the problem number.
2495
2496 E2fsprogs 1.19 (July 13, 2000)
2497 ==============================
2498
2499 Release the resize2fs program since the timeout before it could
2500 be released under the GPL has finally expired.
2501
2502 Add experimental support needed for the ext2 compression patches.
2503 This requires compiling e2fsprogs with the --enable-compression flag
2504 to the configure script.
2505
2506 Added ext3 journalling support.  E2fsck will run the journal (if
2507 necessary) by temporarily mounting the filesystem.  /sbin/fsck.ext3 is
2508 installed as a symlink to e2fsck.  Fsck has been taught about ext3,
2509 and treats it the same as ext2 in terms of the progress bar logic.
2510 Dumpe2fs will display the superblock journaling information if the
2511 filesystem has a journal.  The ext2 library will now permit opening an
2512 ext3 filesystem with the recovery flag set.  This is necessary for
2513 on-line dump's to work correctly, but there may be issues with this
2514 working well since ext3 is much less agressive about syncing blocks to
2515 the filesystem, since they're safe on the journal.
2516
2517 Tune2fs and e2fsck have been changed to allow the mount_count check to
2518 be disabled by setting max_mount_count to -1.  (This was already
2519 supported by the kernel.)
2520
2521 Create a symbolic link for fsck.ext3, since the e2fsprogs utilities
2522 are used for ext3 as well.
2523
2524 Added internationalization support for e2fsprogs; must be enabled
2525 by passing --enable-nls to configure.
2526
2527 Always use the provided ext2fs header files to insulate ourselves from
2528 kernel version changes.  Which include files are used by e2fsprogs
2529 have also been cleaned up to improve portability.
2530
2531 Limit the number of times that e2fsck updates the progress bar so that
2532 people who are booting using a 9600 baud console don't get swampped by
2533 too many updates.
2534
2535 Improved the loop detection algorithm in e2sck's pass #3 so that it is
2536 much, much faster for large filesystems with a large number of
2537 directories.
2538
2539 The memory footprint for e2fsck is now slightly smaller than before.
2540
2541 E2fsck now checks if special devices have a non-zero size, and offers
2542 to clear the size field if it finds such an inode.  
2543
2544 E2fsck now checks if special devices have the append-only flag set,
2545 and offers to clear the inode.
2546
2547 E2fsck now properly handles some "should never fail" cases during a
2548 bitmap copy in pass5.
2549
2550 E2fsck now properly prints control characters in filenames as ^A .. ^Z.
2551
2552 E2fsck now calculates the correct location of the backup superblock in
2553 the case of filesystem blocksizes > 1k.
2554
2555 Fixed a bug in e2fsck's calculation of the number of inodes_per_block
2556 which normally didn't cause problems under most filesystem parameters,
2557 but could cause a valid superblock to be rejected in extreme cases.
2558 Other checks for validating superblock values were made more
2559 stringent.
2560
2561 Added non-destructive write testing to the badblocks program, courtesy
2562 of David Beattie.  The badblocks also now has an option to input the
2563 current set of bad blocks, so that known bad blocks are skipped to
2564 speed up the badblocks test.  There is also a persistent rescan
2565 feature which causes badblocks to run until it has completed some
2566 number of passes without discovering any new bad blocks.
2567
2568 Badblocks now checks to see if the device is mounted and refuses to do
2569 the tests involving writing to the device if it is mounted.  Also,
2570 badblocks now allows the number of blocks to be checked to be
2571 defaulted to the size of the partition.
2572
2573 Fixed a bug in fsck which didn't allow non-root users to be able to
2574 check filesystems if there were any LABEL= or UUID= entries in
2575 /etc/fstab.
2576
2577 The Hurd doesn't support the filetype filesystem feature.  The mke2fs
2578 program now makes sure that for the Hurd, the filestype feature is
2579 turned off.  E2fsck will check to see if the filetype feature is
2580 turned on for Hurd filesystems, and offer to turn off the feature.
2581
2582 Mke2fs now has a safety check to make sure the number of blocks do not
2583 exceed 32 bits even on a 64 bit platform.
2584
2585 Really fixed a bug in fsck to allow "fsck -As" to run interactive
2586 fsck's.  (For those people who like to do interactive fsck's in the
2587 /etc/rc scripts!?!)
2588
2589 Debugfs has a few new features: the rdump command, which will do a
2590 recursive dump of a directory and all of its contents, and the lcd
2591 command which does a local chdir (much like the ftp command of the
2592 same name).  In addition, the debugfs program and the open_filesystem
2593 command now takes three new options: -b and -s, which allows the
2594 blocksize and superblock location to be specified, and the -c option
2595 which is used in catastrophic situations where the block group
2596 descriptors are corrupt.  If the -c option is specified, debugfs will
2597 skip trying to read in the block and inode bitmaps.
2598
2599 Debufs's lsdel command was fixed to handle bad blocks in the inode
2600 table.
2601
2602 A Y2K bug in debugfs's "ls -l" handling was fixed by switching to use
2603 4 digit years.
2604
2605 General improvements in error messages
2606
2607   - Mke2fs prints a sane error message if the partition size is zero
2608         (usually because the partition table wasn't reread by the
2609         kernel due to the partition being busy), instead of "invalid
2610         argument passed to ext2 library while initializing superblock".
2611
2612   - Fsck now prints more self-explanatory message if an invalid UUID=
2613         or LABEL= specification is passed to it.
2614
2615 UUID library changed to use the LGPL.
2616
2617 Fixed a bug in the UUID library where very rapid calls to the
2618 time-based UUID generator could cause duplicate UUID's to be returned.
2619 This was not a problem for e2fsprogs, but it could be a problem for
2620 other users of the library.
2621
2622 Make the UUID library more robust in the face of missing or an
2623 improper /dev/urandom or /dev/random files.
2624
2625 Added some random portability fixes for Solaris.
2626
2627 Some minor man page updates.
2628
2629 Fixed a memory leak in the ss library.
2630
2631
2632 Programmer's notes:
2633 -------------------
2634
2635 We now try to use lseek64 and open64 from the LFS if possible.
2636
2637 The 3rd parameter in e2p's print_flags is now a flags word, instead of
2638 a boolean option.
2639
2640 The mark and unmark bitmap functions now return the previous state of
2641 the bit that was being changed, which is useful for some speed
2642 optimizations.
2643
2644 The following functions have been added to enhance the badblocks list
2645 handling in libext2fs: ext2fs_write_bb_FILE, ext2fs_read_bb_FILE2, and
2646 ext2fs_badblocks_equal.
2647
2648 The ext2 header files now have the latest journalling fields to the
2649 superblock.
2650
2651 The ext2fs_mkdir function in libext2fs now properly backs out of error
2652 conditions robustly.
2653
2654 Cleaned up makefiles:
2655   - to cleanly  compile with the -j flag.
2656   - so distclean removes all generated files.
2657   - so in case of an error while installing header files, the make aborts.
2658
2659 Fix test_script so that it works correctly when compiling in the
2660 source directory.
2661
2662 The random UUID generation routine has been made slightly better in
2663 the case where /dev/random doesn't exist.  (Use of randomly-based UUID
2664 is still not recommended if /dev/random doesn't exist, however; it's
2665 better to use the time/ethernet MAC address UUID in this case.)
2666
2667 Clean up the build process so it's more friendly in case of missing
2668 directories.
2669
2670 The ext2fs header file can now be #include'd into C++ programs.
2671
2672 The e2p.h header file is now installed.
2673
2674 Added workaround to a gawk 3.0.5 bug in lib/ss/mk_cmds.
2675
2676
2677
2678 E2fsprogs 1.18 (November 10, 1999)
2679 ==================================
2680
2681 Fix a core dumping bug in e2fsck if an imagic inode is present or
2682 (more rarely) if the filesystem is badly corrupted enough that e2fsck
2683 has to restart pass 1 processing.  E2fsck now closes the filesystem
2684 before freeing a large number of its data structures, so in the case
2685 of future memory faults, at least the fixed filesystem will be fully
2686 written out.
2687
2688 If a filesystem doesn't support imagic inodes, and e2fsck discovers an
2689 imagic inode, it will offer to clear the imagic flag.
2690
2691 E2fsck will now offer to clear the immutable flag on special files
2692 (device/socket/fifos) when running it in non-preen mode.
2693
2694 E2fsck will now set the filetype when creating /lost+found, and when
2695 connected orphaned inodes to /lost+found.
2696
2697 Debugfs's ncheck and icheck commands now handles the case where there
2698 are bad blocks in the inode table without bombing out.
2699
2700 The badblocks list processing code has been made more efficiently for
2701 appending a large number of (ordered) badblocks to the badblocks list.
2702
2703 Some minor man page updates.
2704
2705 Fsck now allows interactive e2fsck's when using fsck -As (not a common
2706 mode, but some people like to do this in boot scripts for silly reasons).
2707
2708 Programmer's notes:
2709 -------------------
2710
2711 The internal e2fsck problem code for PR_2_SPLIT_DOT was fixed to meet
2712 with the problem code convention.
2713
2714 The badblocks list regression test program has been updated to work
2715 with previously made API name changes.
2716
2717 The ext2fs_free() command now uses the new badblocks API to avoid
2718 using the compatibility layer.
2719
2720 Added new regression test cases; the run_e2fsck test script now
2721 supports the ability for a test case to run a prepratory command
2722 before running e2fsck.
2723
2724 E2fsprogs 1.17 (October 26, 1999)
2725 =================================
2726
2727 Fixed nasty typo in fsck which caused parallelized fsck's to go into an
2728 infinite loop.
2729
2730 Fixed a bug in fsck where it used strncmp to compare a binary UUID,
2731 thus potentially causing problems if a binary UUID contained a NULL
2732 character.
2733
2734 E2fsck now uses stricter checks for directory entries in pass 2:
2735 zero-length filenames are not allowed; neither are 8 byte long
2736 directory entries.
2737
2738 The debugfs "dirty" command now clears the filesystem valid bit.
2739 (Previously this just set the dirty-as-in-needs-writing-out-to-disk
2740 bit in the in-core superblock image.  The new functionality is more
2741 what the user expects, and is more useful.)
2742
2743 Added a debugging hook to test parallel fsck; if the environment
2744 variable FSCK_FORCE_ALL_PARALLEL, then filesystems on the same drive
2745 will be checked in parallel when they normally would not be.
2746
2747 Programmer's notes:
2748 -------------------
2749
2750 Fixed some #ifdef's for compilation under the Hurd OS.
2751
2752 Fixed minor W2K compatibility problems.
2753
2754 Fixed some miscellaneous GCC warnings.
2755
2756
2757 E2fsprogs 1.16 (October 22, 1999)
2758 =================================
2759
2760 Fixed a race condition bug in fsck; when printing a progress bar, if
2761 checking multiple filesystems in parallel, it was possible for fsck to
2762 send e2fsck a SIGUSR1 signal before e2fsck had installed its signal
2763 handler, which would cause it to terminate with a signal 10.
2764
2765 E2fsck now properly handles filesystems that have the
2766 INCOMPAT_FILETYPE feature turned on.  It can be used to convert a
2767 filesystem into using or not using FILETYPE feature.
2768
2769 E2fsck now properly handles filesystems that have the IMAGIC feature
2770 turned on (this is used on Linux AFS servers).
2771
2772 The mke2fs program now creates filesystems that have the filetype and
2773 sparse_superblock features enabled by default, unless it is run on a
2774 pre-2.2 kernel.  These features are not supported by a pre-2.2 kernel,
2775 so there is now a new flag -O which allows the user to specify with
2776 which features she would like to create the filesystem; "mke2fs -O
2777 none" will create a filesystsem compatible with 2.0 kernels.
2778
2779 The tune2fs program now has a -O option which allows the user to set
2780 and reset "safe" filesystem features.  Currently, the only ones which
2781 allows to be modified are the filetype and sparse_superblock features.
2782 Note setting or clearing either feature will require running e2fsck on
2783 the filesystem afterwards.  (n.b. Clearing the sparse_superblock feature
2784 requires that there is enough free space on the filesystem for the
2785 extra superblocks which will be created by e2fsck.)
2786
2787 Debugfs can now set and print filesystem features in the superblock
2788 using the "features" command.  Dumpe2fs will print out the complete
2789 set of features when listing the superblock.
2790
2791 Dumpe2fs has new options -f (force) and -h (header-only).
2792
2793 Fixed a bug in e2fsck which could cause the PROGRAMMING ERROR/bonehead
2794 message to come up.  This could happen when decrementing or
2795 incrementing a link count could result in an overflow.
2796
2797 Fixed a bug in e2fsck where the block count on the lost+found
2798 directory would not be properly incremented when the directory was
2799 expanded to the point where an indirect block needed to be allocated.
2800
2801 E2fsck now makes some additional sanity checks on the superblock to
2802 avoid crashing or giving a memory allocation error if some of the
2803 values in the superblock are unresonable (but the superblock otherwise
2804 looks valid).
2805
2806 Fixed a bug in e2fsck where a very badly corrupted filesystem might
2807 require two passes to completely fix the filesystem.  This happened if
2808 an inode claimed blocks that was part of the filesystem metadata
2809 (typically, when garbage was written into an inode table or indirect
2810 block, since this kind of filesystem corruption normally doesn't
2811 happen otherwise).
2812
2813 On the Alpha, glibc declares st_flags although it isn't actually used;
2814 the configure script was improved to detect this case so that
2815 e2fsprogs can avoid using the non-functional stat field.
2816
2817 The manual pages were updated to use a more consistent formatting
2818 style consistent with standard Unix man pages.  Mke2fs's man page
2819 added documentation for a few previously undocumented options.
2820
2821 Fixed minor display bugs in tune2fs and mke2fs.
2822
2823 Programmer's notes:
2824 -------------------
2825
2826 Improved portability of e2fsprogs to non-Unix systems (in particular, NT).
2827
2828 Added features to parse and print feature strings into the e2p library.  
2829 (e2p_feature2string, e2p_string2feature, e2p_edit_feature).
2830
2831 ext2fs_mkdir() and ext2fs_new_dir_block() now creates directories
2832 whose directory entries contain proper filetype information if the
2833 filesystem supports it.
2834
2835 ext2fs_link() now uses the low 3 bits of its flags parameter to pass
2836 the directory entry filetype information.  This is used to set the
2837 directory entry filetype information if the filesystem supports it.
2838
2839 Fixed a bug in ext2fs_expand_dir() where the block count in a
2840 directory's inode would not be properly incremented when the directory
2841 was expanded to the point where an indirect block needed to be
2842 allocated.
2843
2844
2845 E2fsprogs 1.15 (July 18, 1999)
2846 ==============================
2847
2848 Add configuration checks so that e2fsprogs will compile cleanly on
2849 Linux 2.3 kernels that have renamed i_version to i_generation.
2850
2851 E2fsck now prints a progress/completion bar (and not just a simple
2852 spinner) if the -C0 option is requested or if it receives a SIGUSR1
2853 signal.  Fsck will automatically manage the (potentially muliple)
2854 e2fsck processes to print completion bars if it is given a -C option,
2855 with the right thing happening if multiple filesystems are being
2856 checked in parallel.
2857
2858 Mke2fs now has better automatic hueristics to determine the filesystem
2859 parameters to be used for a particular filesystem.  Added a new option
2860 -T which allows the user to specify how the filesystem is to be used,
2861 which helps mke2fs do a better job selecting the filesystem parameters.
2862
2863 Mke2fs now creates revision 1 filesystems by default, and with the
2864 sparse superblock feature enabled.  The sparse superblock feature is
2865 not understood by Linux 2.0 kernels, so they will only allow read-only
2866 mounts of filesystems with this sparse superblocks.
2867
2868 Fix bug where if /dev/null couldn't be opened (should never happen),
2869 e2fsck would hang in a tight loop.
2870
2871 Make e2fsck handle the case where /lost+found isn't a directory.
2872
2873 E2fsck now uses mallinfo if it exists to get accurate statistics about
2874 its memory usage.
2875
2876 Fix bug in e2fsck where it wouldn't check to see if a disconnected
2877 inode had any problems before connecting it to /lost+found.
2878
2879 Add check to e2fsck so it makes sure that total number of inodes in
2880 the filesystem is a sane number.
2881
2882 Fix fencepost error when clearing an the end of the block bitmap which
2883 caused the last block in the bitmap not to get cleared.
2884
2885 Cleaned up a number of messages in e2fsck:
2886         * The message "Group's #'s copy of the group descriptor..."
2887                 was fixed so that the correct number would be displayed.
2888         * Added missing space in the "disk write-protected" error messsage
2889         * Cleaned up the error message printed when a non-interactive
2890                 e2fsck needs to abort a check because the filesystem
2891                 appears to be mounted.
2892
2893 Added a new command-line utility, uuidgen, which will create and print
2894 a UUID.
2895
2896 Make debugfs's icheck command more robust by checking to make sure an
2897 inode has valid blocks before interarting over the inode's blocks.
2898
2899 UUID generation now uses a random-based scheme whenever possible to
2900 prevent potential privacy problems.
2901
2902 Man pages for all of the UUID functions in the lirbary were added.
2903
2904 Fixed bug in fsck so it won't coredump if a filesystem not in
2905 /etc/fstab is given to it.
2906
2907 Fsck now understands the UUID=xxxx and LABEL=yyyy forms in /etc/fstab
2908 that most of the other mount utilities understands.
2909
2910 Mke2fs will make a filesystem even if it appears mounted if the force
2911 option is given.
2912
2913 Dumpe2fs has new command-line options which allow a filesystem expert
2914 to specify the superblock and blocksize when opening a filesystem.
2915 This is mainly useful when examining the remains of a toasted
2916 filesystem.
2917
2918 The badblocks program has been updated to display correctly on disks
2919 with large block numbers.
2920
2921 The badblocks program no longer gives spurious errors when errors
2922 occur on non-block boundaries, which is common if the blocksize is
2923 larger than 1k.
2924
2925 Mke2fs will sync the disk device every MKE2FS_SYNC block groups if the
2926 MKE2FS_SYNC environment variable is set.  This is to work around a VM
2927 bug in the 2.0 kernel.  I've heard a report that a RAID user was able
2928 to trigger it even using a 2.2 kernel, but hopefully it will not be
2929 needed for most Linux 2.2 users.
2930
2931 Fixed miscellaneous documentation and man pages.
2932
2933 Programmer's notes:
2934 -------------------
2935
2936 Cleaned up functions such as pass1_get_blocks, pass1_read_inode which
2937 in e2fsck's pass1.c really should have been static.
2938
2939 The return value of the uuid_compare() function was changed to make it
2940 match with the convetions used by strcmp, memcmp, and Paul Leach's
2941 UUID sample document.
2942
2943 The "make depend" process has now been made more automated; it now
2944 automatically word-wraps the dependencies, and only replaces source
2945 Makefile.in if there has been a change in the dependencies.  Also, a
2946 top-level "make depend" now recurses through all the subdirectories
2947 automatically.
2948
2949 The Makefile in .../util has been changed so that subst is built using
2950 the native C compiler during a cross-compilation, since the subst
2951 program is only used during the build process.  Also add an explicit
2952 rule to build util/subst by cd'ing to the correct directory and
2953 running Makefile.
2954
2955 The man directories are defined in terms mandir, so that the configure
2956 script can override the location of the manual pages.
2957
2958 The config files have been updated to recognize new machine types for
2959 both the i386 and alpha families.
2960
2961 Fsck has been modified so that it will accurately create an
2962 fsck_instance even when the noexecute flag is set.  This allows for
2963 accurate debugging of the fsck pass structure.  Also, when the verbose
2964 flag is given twice, fsck will print debugging information about when
2965 fsck is waiting for jobs to finish.
2966
2967
2968 E2fsprogs 1.14 (January 9, 1999)
2969 ================================
2970
2971 Fix the fstab parsing code so that it can handle blank lines and
2972 comment characters.  Also, missing pass numbers need to be treated as
2973 zero.
2974
2975 Fixed a bug in e2fsck where under some circumstances (when e2fsck
2976 needs to restart processing after fixing an egregious inconsistency)
2977 it would try to access already freed memory.
2978
2979 E2fsck now prints non-printable characters in directory entries and
2980 pathnames using '^' and 'M-' notation.
2981
2982 Fixed chattr so that it will ignore symbolic links when doing
2983 recursive descent traversals.  For both chattr and lsattr, no longer
2984 print the version string unless the -V option is given.
2985
2986 Allow the system administrator to directly specify the number of
2987 inodes desired in the filesystem, for some special cases where this is
2988 necessary.
2989
2990 Fix portability problems so that e2fsprogs can be compiled under Linux
2991 1.2 systems and Solaris systems.
2992
2993 Update the config.guess file with a more recent version that will
2994 identify newer Linux platforms.
2995
2996 Programmer's notes
2997 ------------------
2998
2999 Ext2fs_read_inode and ext2fs_write_inode will now return an error if
3000 an inode number of zero is passed to them.
3001
3002 E2fsprogs 1.13 (December 15, 1998)
3003 ==================================
3004
3005 Fixed a bug in debugfs where an error messages weren't getting printed
3006 when the ext2 library routines to read inodes returned errors in the
3007 stat, cmri and rm commands.
3008
3009 Fixed a bug in mke2fs so that if a ridiculous inode ratio parameter is
3010 provided, it won't create an inode table smaller than the minimum
3011 number of inodes required for a proper ext2 filesystem.
3012
3013 Fsck now parses the /etc/fstab file directly (instead of using
3014 getmntent()), so that it can distinguish between a missing pass number
3015 field and pass number field of zero.  This caused problems for
3016 diskless workstations where all of the filesystems in /etc/fstab have
3017 an explicit pass number of zero, and fsck could not distinguish this
3018 from a /etc/fstab file with missing pass numbers.
3019
3020 E2fsck will create a /lost+found directory if there isn't one in the
3021 filesystem, since it's safer to create the lost+found directory before
3022 it's needed.
3023
3024 Fixed e2fsck so that it would detect bogus immutable inodes which
3025 happen to be sockets and FIFO files, and offer to clear them.
3026
3027 If a filesystem has multiple reasons why it needs to be checked, and
3028 one of the reasons is that it is uncleanly mounted, e2fsck will print
3029 that as the reason why the filesystem is being checked.
3030
3031 Cleaned up the output routines of mke2fs so that it doesn't overflow
3032 an 80 column display when formating really big filesystems.
3033
3034 Added a sanity check to e2fsck to make sure that file descriptors 0,
3035 1, 2 are open before opening the hard disk.  This avoids a problem
3036 where a broken program might exec e2fsck with those file descriptors
3037 closed, which would cause disastrous results if the kernel returns a
3038 file descriptor for the block device which is also used by FILE *
3039 stdout.
3040
3041 Fixed up the e2fsck progress reporting functions so that the values
3042 reliably reach 100% at the completion of all of the e2fsck passes.
3043
3044 Fixed minor documentation bugs in man pages and usage messages.
3045
3046 Programmer's notes:
3047 -------------------
3048
3049 Fixed a number of lint warnings in the ext2fs library and potential
3050 portability problems from other OS's header files that might define
3051 CPP macros for names like "max" and "min".
3052
3053 ext2fs_badblocks_list_add() has been made more efficient when it needs
3054 to grow the bad blocks list.
3055
3056 Fixed a bug in e2fsck which caused it to dereference a freed pointer
3057 just before exiting.
3058
3059 Fixed the substition process for generating the mk_cmds and compile_et
3060 scripts so that they will work outside of the build tree.
3061
3062 Add sanity check to e2fsck so that if an internal routine
3063 (ext2fs_get_dir_info) returns NULL, avoid dereferencing the pointer
3064 and causing a core dump.  This should never happen, but...
3065
3066 E2fsprogs 1.12 (July 9, 1998)
3067 ==================================
3068
3069 E2fsprogs now works with glibc (at least with the version shipped wtih
3070 RedHat 5.0).  The ext2fs_llseek() function should now work even with
3071 i386 ELF shared libraries and if llseek() is not present.  We also
3072 explicitly do a configure test to see if (a) llseek is in libc, and
3073 (b) if llseek is declared in the system header files.  (See standard
3074 complaints about libc developers don't understand the concept of
3075 compatibility with previous versions of libc.)
3076
3077 The ext2fs library now writes out the block group number in each of
3078 the superblock copies.  This makes it easier to automatically
3079 determine the starting block group of the filesystem when the block
3080 group information is trashed.
3081
3082 Added support for the EXT2_FEATURE_INCOMPAT_FILETYPE feature,
3083 which means that e2fsprogs will ignore the high 8 bits of the
3084 directory entry's name_len field, so that it can be used for other
3085 purposes.
3086
3087 Added support for the EXT2_FEATURE_RO_COMPAT_LARGE_FILE feature.
3088 E2fsprogs will now support filesystems with 64-bit sized files.
3089
3090 Added support for the EXT2_FEATURE_COMPAT_DIR_PREALLOC feature.
3091
3092 Added new program "e2label", contributed by Andries Brouwer.  E2label
3093 provides an easy-to-use interface to modify the filesystem label.
3094
3095 Fixed bug so that lsattr -v works instead of producing a core dump.
3096
3097 Fixed a minor bug in mke2fs so that all groups with bad superblock
3098 backup blocks are printed (not just the first one).
3099
3100 Mke2fs will check the size of the device, and if the user specifies a
3101 filesystem size larger than the apparent size of the device it will
3102 print a warning message and ask if the user wants to proceed.
3103
3104 E2fsck has a new option -C, which sends completion information to the
3105 specified file descriptor.  For the most part, this is intended for
3106 programs to use, although -C 0 will print a spinning character to the
3107 stdout device, which may be useful for users who want to see something
3108 happening while e2fsck goes about its business.
3109
3110 Fixed a bug in e2fsck which could cause a core dump when it needs to
3111 expand the /lost+found directory, and sometimes the bitmaps haven't
3112 been merged in.  Also fixed a related bug where ext2fs_write_dir_block
3113 was used to write out a non-directory block.  (Which would be bad on a
3114 non-Intel platform with byte swapping going on.)
3115
3116 Fixed bug in e2fsck where it would print a "programming error" message
3117 instead of correctly identifying where a bad block was in used when
3118 the bad block was in a non-primary superblock or block group
3119 descriptor.  Also fixed a related bug when sparse superblocks are in
3120 use and there is a bad block where a superblock or block group
3121 descriptor would have been in a group that doesn't include a
3122 superblock.
3123
3124 Fixed a bug in e2fsck (really in libext2fs's dblist function) where if
3125 the block group descriptor table is corrupt, it was possible to try to
3126 allocate a huge array, fail, and then abort e2fsck.
3127 ext2fs_get_num_dirs() now sanity checks the block group descriptor,
3128 and subsitutes reasonable values if the descriptors are obviously bogus.
3129
3130 If e2fsck finds a device file which has the immutable flag set and the
3131 i_blocks beyond the normal device number are non-zero, e2fsck will
3132 offer to remove it, since it's probably caused by garbage in the inode
3133 table.
3134
3135 When opening a filesystem, e2fsck specially checks for the EROFS error
3136 code, and prints a specific error message to the user which is more
3137 user friendly.
3138
3139 If the filesystem revision is too high, change the e2fsck to print
3140 that this is either because e2fsck is out of date, or because the
3141 superblock is corrupt.  
3142
3143 E2fsck now checks for directories that have duplicate '.' and '..'
3144 entries, and fixes this corruption.
3145
3146 E2fsck no longer forces a sync of the filesystem (with attendant sleep
3147 calls) at all times.  The ext2fs_flush() function now performs a sync
3148 only if it needed to write data blocks to disk.
3149
3150 Fixed a minor bug in e2fsck's pass1b's file cloning function, where
3151 certain errors would not be properly reported.
3152
3153 Updated and expanded a few points in the man pages which users
3154 complained wheren't explicit enough.
3155
3156 Added special case byte-swapping code if compiling on the PowerPC, to
3157 accomodate the strange big-endian variant of the ext2 filesystem that
3158 was previously used on the PowerPC port.
3159
3160
3161 Programmer's notes:
3162 -------------------
3163
3164 Removed C++ keywords from the ext2fs libraries so that it could be
3165 compiled with C++.
3166
3167 E2fsck's internal organization has now been massively reorganized so
3168 that pass*.c don't have any printf statements.  Instead, all problems
3169 are reported through the fix_problem() abstraction interface.  E2fsck
3170 has also been revamped so that it can be called as a library from a
3171 application.
3172
3173 Added new fileio primitives in libext2fs for reading and writing
3174 files on an unmounted ext2 filesystem.  This interface is now used by
3175 debugfs.
3176
3177 Added a new libext2fs function for mapping logical block numbers of
3178 a file to a physical block number.
3179
3180 Added a new libext2fs function, ext2fs_alloc_block(), which allocates
3181 a block, zeros it, and updates the filesystem accounting records
3182 appropriately.
3183
3184 Added a new libext2fs function, ext2fs_set_bitmap_padding(), which
3185 sets the padding of the bitmap to be all one's.  Used by e2fsck pass 5.
3186
3187 The libext2fs functions now use a set of memory allocation wrapper
3188 functions: ext2fs_get_mem, ext2fs_free_mem, and ext2fs_resize_mem,
3189 instead of malloc, free, and resize.  This makes it easier for us to
3190 be ported to strange environments where malloc, et. al. aren't
3191 necessarily available.
3192
3193 Change the libext2fs fucntion to return ext2-specific error codes
3194 (EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND, for example) instead of using
3195 and depending on the existence of system error codes (such as EEXIST
3196 and ENOENT).
3197
3198 Renamed io.h to ext2_io.h to avoid collision with other OS's header
3199 files.
3200
3201 Add protection against ext2_io.h and ext2fs.h being included multiple
3202 times.
3203
3204 The types used for memory lengths, etc. have been made more portable.
3205 In generla, the code has been made 16-bit safe.  Added Mark
3206 Habersack's contributed DOS disk i/o routines.
3207
3208 Miscellaneous portability fixes, including not depending on char's
3209 being signed.
3210
3211 The io_channel structure has a new element, app_data, which is
3212 initialized by the ext2fs routines to contain a copy of the filesystem
3213 handle.
3214
3215 ext2fs_check_directory()'s callback function may now return the error
3216 EXT2_ET_CALLBACK_NOTHANDLED if it wishes ext2fs_check_directory() to
3217 really do the checking, despite the presence of the callback function.
3218
3219
3220 E2fsprosg 1.11 (June 17, 1997)
3221 ==============================
3222
3223 Fixed e2fsck to detect (previously ignored) conflicts between the
3224 superblock or block group descriptors and block bitmaps, inode
3225 bitmaps, and inode tables.
3226
3227 Fixed bug in e2fsck so that when the message printed out when a block
3228 or inode bitmap conflicts with other data, it has the correct group
3229 number.
3230
3231 Fixed bug in e2fsck and mke2fs where the blocksize wasn't being passed
3232 to badblocks.  This meant that not all of the filesystem was being
3233 tested for bad blocks! 
3234
3235 Fixed an array boundary overrun case which cropped up in
3236 ext2fs_badblocks_list_test when a user tried running "mke2fs -c 
3237 -b 4096".
3238
3239 Adjusted the number of columns printed by mke2fs when displaying the
3240 superblock backups to avoid running over 80 columns when making a
3241 really big filesystem.
3242
3243 Fixed up the man pages for e2fsck, debugfs, badblocks, chattr,
3244 dumpe2fs, fsck, mke2fs, and tune2fs (typos and other minor grammar
3245 fixes), thanks to some suggestions from Bill Hawes (whawes@star.net).
3246
3247 Programmer's notes:
3248 -------------------
3249
3250 Fixed install rule in lib/ss so that ss_err.h is actually getting
3251 installed.
3252
3253 Fixed bug in ext2fs_copy_bitmap; the destination bitmap wasn't getting
3254 bassed back to the caller.
3255
3256 Fixed bug in ext2fs_inode_scan_goto_blockgroup; it had not been
3257 setting the current inode number (which meant this function wasn't
3258 working at all).
3259
3260 Fixed bug in ext2fs_resize_generic_bitmap; it had not be zeroing all
3261 blocks in the bitmap when increasing the size of the bitmap.
3262
3263 Changed the initial number of blocks allocated by ext2fs_init_dblist()
3264 to be more realistic.
3265
3266 Added a new function ext2fs_allocate_group_table, which sets up the
3267 group descriptor information (and allocates inode and block bitmaps,
3268 and inode tables for a particular group).  The function was created by
3269 factoring out code form ext2fs_allocate_tables().
3270
3271 Added a new function ext2fs_move_blocks which takes a bitmap of the
3272 blocks to be moved, and moves them to another location on the
3273 boardboard.
3274
3275 Make the unix_io channel's io_channel_flush implementation calls sync()
3276 to to flush the kernel buffers to disk.
3277
3278 Added a new function ext2fs_dblist_count returns the number of
3279 directory blocks in dblist.
3280
3281
3282 E2fsprogs 1.10 (April 24, 1997)
3283 ===============================
3284
3285 Mke2fs once again defaults to creating revision #0 filesystems, since
3286 people were complaining about breaking compatibility with 1.2 kernels.
3287 Warning messages were added to the mke2fs and tune2fs man pages that
3288 the sparse superblock option isn't supported by most kernels yet (1.2
3289 and 2.0 both don't support parse superblocks.)
3290
3291 Added new flag to mke2fs, -R <raid options>, which allows the user to
3292 tell mke2fs about the RAID configuration of the filesystem.  Currently
3293 the only supported raid option is "stride" which specifies the width
3294 of the RAID stripe.
3295
3296 Fixed bug in e2fsck where pass1b would bomb out if there were any
3297 blocks marked bad in the inode table.
3298
3299 Fixed rare bug in mke2fs where if the user had a very unlucky number
3300 of blocks in a filesystem (probability less than .002) the resulting
3301 filesystem would be corrupt in the last block group.
3302
3303 Fixed bug where if e2fsck tried to allocate a block to fix a
3304 filesystem corruption problem and the filesystem had no free blocks,
3305 ext2fs_new_block() would loop forever.
3306
3307 The configure script now checks explicitly to see if "-static" works,
3308 since that can't be assumed to be true --- RedHat doesn't install
3309 libc-static by default.
3310
3311 Fixed bug in libext2's block iterator functions where under some
3312 cirmcustances, file with holes would cause the bcount parameter to the
3313 callback function to be incorrect.  This bug didn't affect any of
3314 e2fsprogs programs, but it was discovered by Paul Mackerras, the
3315 author of the PPC boot loader.
3316
3317 Removed use of static variables to store the inode cache in libext2fs.
3318 This caused problems if more than one filesystem was accessed via
3319 libext2fs (static variables in libraries are generally a bad idea).
3320 Again, this didn't affect e2fsprogs programs, but it was discovered by
3321 Paul Mackerras.
3322
3323 Fixed minor bugs and version code drift to assure that e2fsprogs 1.10
3324 will compile cleanly with 1.2.13 kernels (even with a.out shared
3325 libraries!)
3326
3327 Programmer's notes:
3328 -------------------
3329
3330 Added new functions to duplicate an ext2 filesystem handle, and its
3331 associated substructure.  New functions: ext2fs_dup_handle(),
3332 ext2fs_copy_dblist(), ext2fs_badblocks_copy(), ext2fs_copy_bitmap().
3333 Other structures, such as the io_channel and the inode_cache, now have
3334 a ref count so that they only get freed when they are no longer used
3335 by any filesystem handle.  (These functions were added as part of the
3336 development effort for an ext2 resizer).
3337
3338 E2fsprogs 1.09 (April 14, 1997)
3339 ===============================
3340
3341 Fixed bug in mke2fs (really in lib/ext2fs/initialize.c) which was
3342 accidentally introduced in the 1.08 release.  The overhead calculation
3343 was accidentally removed, which caused ext2fs_initialize() to not
3344 notice when the filesystem size needed to be adjusted down because
3345 there wasn't enough space in the last block group.
3346
3347 Fixed bug in version parsing library routine; it was always parsing
3348 the library version string, instead of using the passed-in string.
3349
3350 Clarified chattr man page.
3351
3352 E2fsprogs 1.08 (April 10, 1997)
3353 ===============================
3354
3355 E2fsck 1.07 was very slow when checking very large filesystems with a
3356 lot of files that had hard links (i.e., news spools).  This was fixed
3357 by seriously revamping the icount abstraction.  Added a formal test
3358 suite for the icount abstraction.
3359
3360 Debugfs now has a "-l" option to the "ls" command, which lists the
3361 inode number, permissions, owner, group, size, and name of the files
3362 in the directory.
3363
3364 Fix a bug in e2fsck where when a directory had its blocks moved to
3365 another location during the pass 1b processing, the directory block
3366 list wasn't updated, so pass 2 wouldn't check (and correct) the
3367 correct directory block.
3368
3369 E2fsck will now treat inodes which contain blocks which are claimed by
3370 the filesystem metadata by treating them as multiply claimed blocks.
3371 This way, the data in those blocks can be copied to a new block during
3372 the pass 1b--1d processing.
3373
3374 E2fsck will attempt to determine the correct superblock number and
3375 display it in the diagnostic and warning messages if possible.
3376
3377 Add support for a new (incompatible) feature, "sparse_super".  This
3378 feature reduces the number of blocks which contain copies of backup
3379 superblocks and block group descriptors.  (It is only an incompatible
3380 feature because of a bug in ext2_free_blocks.)  mke2fs and tune2fs now
3381 support a new -s option; e2fsck will recognize filesystems built with
3382 this feature turned on.
3383
3384 E2fsck now checks the library to make sure is the correct version,
3385 using new library functions.  (This helps to diagnose incorrectly
3386 installed e2fsprogs distributions.)
3387
3388 Dumpe2fs now prints more information; its now prints the the
3389 filesystem revision number, the filesystem sparse_super feature (if
3390 present), the block ranges for each block group, and the offset from
3391 the beginning of the block group.
3392
3393 Mke2fs now distributes the inode and block bitmap blok so that the
3394 won't be concentrated in one or two disks in RAID/striping setups.
3395 Also, if the user chooses a 2k or 4k block group, mke2fs will try to
3396 choose the largest blocks per group that be chosen.  (For 2k blocks,
3397 you can have up to 16384 blocks/group; for 4k blocks, you can have up
3398 to 32768 blocks/group.)  Previously mke2fs would not allow
3399 specification of more than 8192 blocks per group, even if you were
3400 using a 2k or 4k block group.
3401
3402 Programmer's notes:
3403 -------------------
3404
3405 Added a new function ext2fs_create_icount2() which takes a "hint"
3406 argument.  This hint argument presets the icount array with the list
3407 of inodes which actually need to be in the icount array.  This really
3408 helps to speed up e2fsck.
3409
3410 Added a new function ext2fs_icount_validate() which checks the rep
3411 invariant for the icount structure.  This is used mostly for testing.
3412
3413 The error mesasage given when a bad inode number is passed to
3414 test_generic_bitmap to reflect EXT2FS_TEST_ERROR (instead of
3415 EXT2FS_UNMARK_ERROR).
3416
3417 Added a new function ext2fs_set_dir_block which sets the block of a
3418 dblist entry, given the directory inode and blockcnt.
3419
3420 Added a new function ext2fs_get_library_version() which returns the
3421 current library version, and ext2fs_parse_version_string() which
3422 returns a version number based on a e2fsprogs version string.
3423
3424 The icount functions will return EINVAL if the passed in inode number
3425 is out of bounds.
3426
3427 E2fsprogs 1.07 (March 9, 1997)
3428 ==============================
3429
3430 E2fsck is now uses much less memory when checking really large
3431 filesystems (or rather, filesystems with a large number of inodes).
3432 Previously a filesystem with 1 million inodes required 4 megabytes of
3433 memory to store inode count statistics; that storage requirement has
3434 now been reduced to roughly half a megabyte.
3435
3436 E2fsck can now properly deal with bad blocks appearing inside the
3437 inode table.  Instead of trying to relocate the inode table (which
3438 often failed because there wasn't enough space), the inodes in the bad
3439 block are marked as in use.
3440
3441 E2fsck will automatically try to use the backup superblocks if the
3442 primary superblocks have a bad magic number or have missing meta-data
3443 blocks (or meta-data blocks which are out of range).
3444
3445 E2fsck's pass 3 has been made more efficient; most noticeable on
3446 filesystems with a very large number of directories.
3447
3448 Completely revamped e2fsck's system of printing problem reports.  It
3449 is now table driven, to make them more easily customizeable and
3450 extendable.  Error messages which can be printed out during preen mode
3451 are now one line long.
3452
3453 Fixed e2fsck's filesystem swapping code so that it won't try to swap
3454 fast symbolic links or deleted files.
3455
3456 Fixed e2fsck core dumping when fixing a filesystem which has no
3457 directories (not even a root directory).
3458
3459 Added a check to e2fsck to make sure that the length of every
3460 directory entry is a multiple of 4 (since the kernel complains if it
3461 isn't).
3462
3463 Added a check to e2fsck to make sure that a directory entry isn't a
3464 link to the root directory, since that isn't allowed.
3465
3466 Added a check to e2fsk to now make sure the '.' and '..' directory
3467 entries are null terminated, since the 2.0 kernel requires it.
3468
3469 Added check to write_bitmaps() to make sure the superblock doesn't get
3470 trashed if the inode or block bitmap is marked as being block zero.
3471
3472 Added checking of the new feature set fields in the superblock, to
3473 avoid dealing with new filesystem features that this package wasn't
3474 set up to handle.
3475
3476 Fixed a fencepost error in ext2fs_new_block() which would occasionally
3477 try to allocate a block beyond the end of a filesystem.
3478
3479 When the UUID library picks a random IEEE 802 address (because it
3480 can't find one from a network card), it sets the multicast bit, to
3481 avoid conflicting with a legitimate IEEE 802 address.
3482
3483 Mke2fs now sets the root directory's owner to be the real uid of the
3484 user running mke2fs.  If the real uid is non-zero, it also sets
3485 the group ownership of the root directory to be the real group-id of
3486 the user running mke2fs.
3487
3488 Mke2fs now has more intelligent error checking when it is given a
3489 non-existent device.
3490
3491 When badblocks is given the -vv option, it now updates the block that
3492 it is currently testing on every block.
3493
3494 Fixed a bug in fsck where it wouldn't modify the PATH envirnoment
3495 currently correctly if PATH wasn't already set.
3496
3497 Shared libraries now built with dependencies.  This allows the shared
3498 library files to be used with dlopen(); it also makes the transition
3499 to libc 6 easier, since ld.so can tell which libc a particular shared
3500 library expects to use.
3501
3502 Programmer's notes:
3503 -------------------
3504
3505 Added new abstraction (defined in dblist.c) for maintaining a list of
3506 blocks which belongs to directories.  This is used in e2fsck and other
3507 programs which need to iterate over all directories.
3508
3509 Added new functions which test to see if a contiguous range of blocks
3510 (or inodes) are available.  (ext2fs_*_bitmap_range).
3511
3512 Added new function (ext2_inode_has_valid_blocks) which returns true if
3513 an inode has valid blocks.  (moved from e2fsck code).
3514
3515 Added new function (ext2fs_allocate_tables) which allocates the
3516 meta-data blocks as part of initializing a filesystem.  (moved from
3517 mke2fs code).
3518
3519 Added a new I/O manager for testing purposes.  It will either allow a
3520 program to intercept I/O requests, or print debugging messages to
3521 trace the activity of a program using the I/O manager.
3522
3523 The badblocks_list functions now store the bad blocks in a sorted
3524 order, and use a binary search to speed up badblocks_list_test.
3525
3526 The inode scan function ext2fs_get_next_inode() may now return a soft
3527 error returns: MISSING_INODE_TABLE and BAD_BLOCK_IN_INODE_TABLE in
3528 those cases where part of an inode table is missing or there is a bad
3529 block in the inode table.  
3530
3531 Added a new function (ext2fs_block_iterate2) which adds new arguments to
3532 the callback function to return a pointer (block and offset) to the
3533 reference of the block.
3534
3535 Added new function (ext2fs_inode_scan_goto_blockgroup) which allows an
3536 application to jump to a particular block group while doing an inode
3537 scan.
3538
3539 The badblocks list functions were renamed from badblocks_* to
3540 ext2fs_badblocks_*.  Backwards compatibility functions are available
3541 for now, but programs should be modified to use the new interface.
3542
3543 Some of the library functions were reorganized into separate files to
3544 reduce the size of some programs which statically link against the
3545 ext2 library.
3546
3547 Put in some miscellaneous fixes for the Alpha platform.
3548
3549
3550 E2fsprogs 1.06 (October 7, 1996)
3551 ================================
3552
3553 Fixed serious bug in e2fsck: if the block descriptors are bad, don't
3554 smash the backup copies in ext2fs_close().  (The problem was that when
3555 e2fsck -p discovered the problem, while it was closing the filesystem
3556 and exiting, it was also blowing away the backup superblocks on the
3557 disk, which was less than friendly.)  We now make it the case that we
3558 only write out the backup superblock and the back block descriptors if
3559 the filesystem is completely free from problems.
3560
3561 Fixed a bug in block_interate in the lib/ext2fs library which caused
3562 e2fsck to fail on GNU Hurd-created filesystems.
3563
3564 Add support for Linux/FT's bootloader, which actually uses
3565 EXT2_BOOT_LOADER, and sets its mode bits which caused e2fsck to want
3566 to clear the inode.
3567
3568 Add support for the "A" (no atime update) attribute.  (Note: this
3569 attribute is not yet in production kernels.)
3570
3571 The test suite is not automatically run when doing a "make all" from
3572 the top level directory.  Users should manually run "make check" if
3573 they wish to run the test suite.
3574
3575 Upon a preenhalt(), make the printed message more explicit that
3576 running e2fsck "MANAULLY" means without the -p or -a options.
3577
3578 In e2fsck, if a disconnected inode is zero-length, offer to clear it
3579 instead of offering to connect it to lost+found.
3580
3581 In e2fsck, if a filesystem was just unmounted uncleanly, and needs
3582 e2fsck to be run over it, change e2fsck to explicitly display this
3583 fact.
3584
3585 For dumpe2fs and e2fsck, cause the -V option to print out which
3586 version of the ext2fs library is actually getting used.  (This will
3587 help detect mismatches of using a 1.06 utility with a 1.05 library,
3588 etc.)
3589
3590 Programmers' notes:
3591 -------------------
3592
3593 EXT2_SWAP_BYTES was changed to EXT2_FLAG_SWAP_BYTES, which better fits
3594 the naming convention.
3595
3596 In ext2fs_initialize(), make sure the description for the inode bitmap
3597 is correctly initialize.
3598
3599 Fixed minor type typo in ext2fs_allocate_generic_bitmap();
3600
3601 E2fsprogs 1.05 (September 7, 1996)
3602 ==================================
3603
3604 Add support for new fields in the ext2 superblock --- volume name,
3605 volume UUID, and last mounted field.  Dumpe2fs displays these fields,
3606 tune2fs and mke2fs allows you to set them.  E2fsck will automatically
3607 generate a UUID for those volumes that don't have them.  
3608
3609 Put in support for e2fsck to recognize HURD specific ext2 features ---
3610 most notably, the translator block.  The e2fsprogs tools will now use
3611 the creator_os field in the superblock to correctly handle different
3612 OS-specific variants of the ext2 filesystem.
3613
3614 E2fsck now fixes inodes which have a the deletion time set, but which
3615 have a non-zero i_link_count field by offering to clear the deletion
3616 time.  Previously e2fsck assumed that the inode was deleted (per 0.3c
3617 ext2 kernel behavior) and offered to unlink the file.
3618
3619 If e2fsck sets the clean bit, but nothing else, set the exit code
3620 FSCK_NONDESTRUCT.  After all, e2fsck did fix a filesystem error --- it
3621 set the filesystem valid bit when it was previously cleared.  :-) This
3622 was needed to make the HURD fsck driver happy.
3623
3624 If the  user  refuses to attach an  unattached  inode, e2fsck  will no
3625 longer set the inode's link count.  Otherwise, the  inode would end up
3626 getting marked as unused, which might cause loss of data later.
3627
3628 Make the message issued by e2fsck when the superblock is corrupt less
3629 confusing for users.  It now mentions that another reason for the
3630 "corrupt superblock" message might be that the partition might not be
3631 an ext2 filesystem at all (it might swap, msdos filesystem, ufs, etc.)
3632
3633 Make the libext2 library more robuest so that e2fsck won't coredump on
3634 an illegal superblock where the blocksize is zero.  (f_crashdisk is
3635 the test case).
3636
3637 By default, create filesystems where the default checkinterval is 6
3638 months (180 days).  Linux servers can be robust enough that 20 reboots
3639 can be a long, long time.
3640
3641 Added configure flag --enable-old-bitops, which forces the bitops to
3642 use the old (native) bitmask operations.  By default on the sparc
3643 platform, the standard ext2 bit ordering is now used.
3644
3645 Added a new feature to e2fsck to byte-swap filesystems; this can be
3646 used to convert old m68k filesystems to use the standard byte-order
3647 storage for the superblock, inodes, and directory blocks.  This
3648 function is invoked by using the '-s' option to e2fsck.
3649
3650 Debugfs's "dump" command has been enhanced so that it writes out the
3651 exact size of the file so that the nulls at the end of the file are
3652 eliminated.  The command also accept a new "-p" option which will
3653 attempt preserve to preserve the ownernship, permissions, and
3654 file modification/access times.
3655
3656 Debugfs has two new options, -f and -R.  The -R option allows the user
3657 to execute a single debugfs command from the command line.  The -f
3658 option allows the user to specify a "command file" containing debugfs
3659 commands which will get executed.
3660
3661 Dumpe2fs now pretty prints the check interval, instead of just
3662 printing the check interval as a number of seconds.
3663
3664 Fix bugs in debugfs: the params command when no filesystem is opened
3665 no longer causes a core dump.  It is now possible to unlink a file
3666 when a pathame containing a '/' is specified.
3667
3668 Tune2fs has a new -C option which sets the number of times the
3669 filesystem has been mounted.
3670
3671 Fix the chattr '-v' option so that it actually works.  Chattr was
3672 being buggy about the -v option parsing.
3673
3674 Programmers' notes:
3675 -------------------
3676
3677 The directory lib/uuid contains a set of library routines to generate
3678 DCE compatible UUIDs.  
3679
3680 Extended ext2fs_namei() to handle symbolic links.  Added new function
3681 ext2fs_nami_follow() which will follow last symbolic link in the case
3682 where the pathname points to a sym link.
3683
3684 The ext2fs_block_iterate function will now return the HURD translator
3685 block, if present.  The new flag BLOCK_FLAG_DATA_ONLY will cause the
3686 iterator to return data blocks only.  The ext2fs.h file now defines
3687 constants BLOCK_COUNT_IND, BLOCK_COUNT_DIND, BLOCK_COUNT_TIND, and
3688 BLOCK_COUNT_TRANSLATOR, which are the magic values passed in the block
3689 count field of the iterator callback function.
3690
3691 The test script driver now takes an optional second argument, which is
3692 the test case to be run.  This allows you to run a test case without
3693 needing to run the entire test suite.
3694
3695 On Linux ELF systems, install the .so files in the correct places
3696 (/usr/lib).  The .so files must be stored in the same directory as the
3697 .a files.
3698
3699 Fixed miscellaneous HURD compilation issues with header file being
3700 included in the right order.
3701
3702 Fixed debugfs so that it resets optind to zero, not one, since setting
3703 optind to zero is more correct.
3704
3705
3706 E2fsprogs 1.04 (May 16, 1996)
3707 =============================
3708
3709 First "official" (1.03 was a limited release only) to support building
3710 e2fsprogs under Linux 2.0 kernels (as well as late model 1.3 and 1.99
3711 kernels).
3712
3713 This package includes a RPM specs file, that it can be built using the
3714 RedHat Package Manager.
3715
3716 E2fsck now prints a hint that if there are lots of incorrectly located
3717 inode bitmaps, block bitmaps, and inode table blocks, the user might
3718 want to try using e2fsck -b 8193 first, to see if that fares any
3719 better.
3720
3721 For ext2 filesystem written with the hurd, debugfs will now print out
3722 the translator field when printing an inode structure.
3723
3724 Lots of miscellaneous linking/installation cleanups:
3725
3726   Libraries are now linked using a relative pathname, instead of
3727   relying on -L working correct.  It doesn't, in many cases, including
3728   current versions of GNU ld.  This guarantees that the build tree is
3729   linking with the right libraries, instead of the ones installed in
3730   /usr/lib.
3731
3732   Header files, man pages, and the et/ss shell scripts are now
3733   generated using a custom substitution script, instead of relying on
3734   the configure script.  This prevents needless recompilation of
3735   files; in addition, the custom substitution script is much faster.
3736
3737   e2fsck may now be linked dynamically, by using the
3738   --enable-dynamic-e2fsck flag to configure.  This is not recommended,
3739   since it increases e2fsck's dependence on other files, but some
3740   people need to save disk space, and other critical programs on their
3741   systems were being linked dynamically anyway.
3742
3743   Programs such as fsck which didn't need to be linked against
3744   libext2fs (or mke2fs which didn't need to be linked against libe2p)
3745   only link against libraries they actually need.  Otherwise, those
3746   programs would require the presense of libraries that otherwise
3747   could be removed from a rescuse diskette.
3748
3749   The ss include files are now installed correctly so they can
3750   actually be used by another package.
3751
3752   If the profiling libraries are built, they are now installed on a
3753   "make install-libs".
3754
3755
3756 E2fsprogs 1.03 (March 27, 1996)
3757 ===============================
3758
3759 Change the m68k bit numbering for bitmasks to match the bit numbering
3760 used by all other ext2 implementations.  (This change was requested by
3761 the m68k kernel development team.)
3762
3763 Support (in-development) filesystem format revision which supports
3764 (among other things) dynamically sized inodes.
3765
3766 Fixed a bug in the ext2 library so that an intelligent error is
3767 returned if mke2fs is run with a ridiculously small number of blocks
3768 for a partition.
3769
3770 Fixed a bug in the ext2 library which required that the device be
3771 openable in read/write mode in order to determine its size.  This
3772 caused e2fsck -n to require read/write access when it was not
3773 previously necessary.
3774
3775 Fixed a bug in e2fsck which casued it to occasionally fail the test
3776 suite depending on which version of the floating point library it was
3777 using.
3778
3779 Fixed a bug in e2fsck so that it now halts with a fatal error when
3780 certain superblock consistency checks fail.  Previously it continued
3781 running e2fsck, with some potential confusing/damaging consequences.
3782
3783 Added new flag to fsck which allows the root to be checked in parallel
3784 with other filesytems.  This is not the safest thing in the world to
3785 do, but some system administrators really wanted it.
3786
3787 Fixed -Wall flames in lib/ss.
3788
3789
3790 E2fsprogs 1.02 (January 16, 1996)
3791 =================================
3792
3793 Fix to allow e2fsprogs to be compiled on recent 1.3 (pl45+) kernels.
3794
3795 Change e2fsck to print statistics of how many non-contiguous files are
3796 on the system.  Note that a file which is larger than 8k blocks, it is
3797 guaranteed to be non-contiguous.
3798
3799 In mke2fs, print a warning message if a user tries to format a whole
3800 disk (/dev/hda versus /dev/hda1).  If a user really wants to format a
3801 whole disk, the -F (force) option forces mke2fs to format a whole disk
3802 as a filesytem.
3803
3804 Fix a bug in fsck where in some cases it might start checking
3805 partitions in the next pass before it finishes checking partitions in
3806 the current pass.  This still won't cause two partitions on the same
3807 disk will be checked, so it's rarely a problem in real life.
3808
3809 Patch lsattr so that it won't hang when checking a named pipe.
3810
3811 Minor compilation fixes:
3812         * Fix the order of libraries that were linked in debugfs.
3813         * Allow the sources to be compiled with -ansi turned on.