Whamcloud - gitweb
ChangeLog, dblist.c:
[tools/e2fsprogs.git] / RELEASE-NOTES
1 E2fsprogs 1.12 (February 20, 1998)
2 ==================================
3
4 E2fsprogs now works with glibc (at least with the version shipped wtih
5 RedHat 5.0).  The ext2fs_llseek() function should now work even with
6 i386 ELF shared libraries and if llseek() is not present.  We also
7 explicitly do a configure test to see if (a) llseek is in libc, and
8 (b) if llseek is declared in the system header files.  (See standard
9 complaints about libc developers don't understand the concept of
10 compatibility with previous versions of libc.)
11
12 Added new program "e2label", contributed by Andries Brouwer.  E2label
13 provides an easy-to-use interface to modify the filesystem label.
14
15 Fixed a minor bug in mke2fs so that all groups with bad superblock
16 backup blocks are printed (not just the first one).
17  
18 Fixed a bug in e2fsck which could cause a core dump when it needs to
19 expand the /lost+found directory, and sometimes the bitmaps haven't
20 been merged in.  Also fixed a related bug where ext2fs_write_dir_block
21 was used to write out a non-directory block.  (Which would be bad on a
22 non-Intel platform with byte swapping going on.)
23
24 Fixed bug in e2fsck where it would print a "programming error" message
25 instead of correctly identifying where a bad block was in used when
26 the bad block was in a non-primary superblock or block group
27 descriptor.  Also fixed a related bug when sparse superblocks are in
28 use and there is a bad block where a superblock or block group
29 descriptor would have been in a group that doesn't include a
30 superblock.
31
32 Fixed a bug in e2fsck (really in libext2fs's dblist function) where if
33 the block group descriptor table is corrupt, it was possible to try to
34 allocate a huge array, fail, and then abort e2fsck.
35 ext2fs_get_num_dirs() now sanity checks the block group descriptor,
36 and subsitutes reasonable values if the descriptors are obviously bogus.
37
38 If e2fsck finds a device file which has the immutable flag set and the
39 i_blocks beyond the normal device number are non-zero, e2fsck will
40 offer to remove it, since it's probably caused by garbage in the inode
41 table.
42
43 When opening a filesystem, e2fsck specially checks for the EROFS error
44 code, and prints a specific error message to the user which is more
45 user friendly.
46
47 If the filesystem revision is too high, change the e2fsck to print
48 that this is either because e2fsck is out of date, or because the
49 superblock is corrupt.  
50
51 E2fsck now checks for directories that have duplicate '.' and '..'
52 entries, and fixes this corruption.
53
54 E2fsck no longer forces a sync of the filesystem (with attendant sleep
55 calls) at all times.  The ext2fs_flush() function now performs a sync
56 only if it needed to write data blocks to disk.
57
58 Fixed a minor bug in e2fsck's pass1b's file cloning function, where
59 certain errors would not be properly reported.
60
61 Updated and expanded a few points in the man pages which users
62 complained wheren't explicit enough.
63
64 Added special case byte-swapping code if compiling on the PowerPC, to
65 accomodate the strange big-endian variant of the ext2 filesystem that
66 was previously used on the PowerPC port.
67
68
69 Programmer's notes:
70 -------------------
71
72 Removed C++ keywords from the ext2fs libraries so that it could be
73 compiled with C++.
74
75 E2fsck's internal organization has now been massively reorganized so
76 that pass*.c don't have any printf statements.  Instead, all problems
77 are reported through the fix_problem() abstraction interface.  E2fsck
78 has also been revamped so that it can be called as a library from a
79 application.
80
81 Added new fileio primitives in libext2fs for reading and writing
82 files on an unmounted ext2 filesystem.  This interface is now used by
83 debugfs.
84
85 Added a new libext2fs function for mapping logical block numbers of
86 a file to a physical block number.
87
88 Added a new libext2fs function, ext2fs_alloc_block(), which allocates
89 a block, zeros it, and updates the filesystem accounting records
90 appropriately.
91
92 Added a new libext2fs function, ext2fs_set_bitmap_padding(), which
93 sets the padding of the bitmap to be all one's.  Used by e2fsck pass 5.
94
95 The libext2fs functions now use a set of memory allocation wrapper
96 functions: ext2fs_get_mem, ext2fs_free_mem, and ext2fs_resize_mem,
97 instead of malloc, free, and resize.  This makes it easier for us to
98 be ported to strange environments where malloc, et. al. aren't
99 necessarily available.
100
101 Change the libext2fs fucntion to return ext2-specific error codes
102 (EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND, for example) instead of using
103 and depending on the existence of system error codes (such as EEXIST
104 and ENOENT).
105
106 Renamed io.h to ext2_io.h to avoid collision with other OS's header
107 files.
108
109 Add protection against ext2_io.h and ext2fs.h being included multiple
110 times.
111
112 The types used for memory lengths, etc. have been made more portable.
113 In generla, the code has been made 16-bit safe.  Added Mark
114 Habersack's contributed DOS disk i/o routines.
115
116 Miscellaneous portability fixes, including not depending on char's
117 being signed.
118
119 The io_channel structure has a new element, app_data, which is
120 initialized by the ext2fs routines to contain a copy of the filesystem
121 handle.
122
123 ext2fs_check_directory()'s callback function may now return the error
124 EXT2_ET_CALLBACK_NOTHANDLED if it wishes ext2fs_check_directory() to
125 really do the checking, despite the presence of the callback function.
126
127
128 E2fsprosg 1.11 (June 17, 1997)
129 ==============================
130
131 Fixed e2fsck to detect (previously ignored) conflicts between the
132 superblock or block group descriptors and block bitmaps, inode
133 bitmaps, and inode tables.
134
135 Fixed bug in e2fsck so that when the message printed out when a block
136 or inode bitmap conflicts with other data, it has the correct group
137 number.
138
139 Fixed bug in e2fsck and mke2fs where the blocksize wasn't being passed
140 to badblocks.  This meant that not all of the filesystem was being
141 tested for bad blocks! 
142
143 Fixed an array boundary overrun case which cropped up in
144 ext2fs_badblocks_list_test when a user tried running "mke2fs -c 
145 -b 4096".
146
147 Adjusted the number of columns printed by mke2fs when displaying the
148 superblock backups to avoid running over 80 columns when making a
149 really big filesystem.
150
151 Fixed up the man pages for e2fsck, debugfs, badblocks, chattr,
152 dumpe2fs, fsck, mke2fs, and tune2fs (typos and other minor grammar
153 fixes), thanks to some suggestions from Bill Hawes (whawes@star.net).
154
155 Programmer's notes:
156 -------------------
157
158 Fixed install rule in lib/ss so that ss_err.h is actually getting
159 installed.
160
161 Fixed bug in ext2fs_copy_bitmap; the destination bitmap wasn't getting
162 bassed back to the caller.
163
164 Fixed bug in ext2fs_inode_scan_goto_blockgroup; it had not been
165 setting the current inode number (which meant this function wasn't
166 working at all).
167
168 Fixed bug in ext2fs_resize_generic_bitmap; it had not be zeroing all
169 blocks in the bitmap when increasing the size of the bitmap.
170
171 Changed the initial number of blocks allocated by ext2fs_init_dblist()
172 to be more realistic.
173
174 Added a new function ext2fs_allocate_group_table, which sets up the
175 group descriptor information (and allocates inode and block bitmaps,
176 and inode tables for a particular group).  The function was created by
177 factoring out code form ext2fs_allocate_tables().
178
179 Added a new function ext2fs_move_blocks which takes a bitmap of the
180 blocks to be moved, and moves them to another location on the
181 boardboard.
182
183 Make the unix_io channel's io_channel_flush implementation calls sync()
184 to to flush the kernel buffers to disk.
185
186 Added a new function ext2fs_dblist_count returns the number of
187 directory blocks in dblist.
188
189
190 E2fsprogs 1.10 (April 24, 1997)
191 ===============================
192
193 Mke2fs once again defaults to creating revision #0 filesystems, since
194 people were complaining about breaking compatibility with 1.2 kernels.
195 Warning messages were added to the mke2fs and tune2fs man pages that
196 the sparse superblock option isn't supported by most kernels yet (1.2
197 and 2.0 both don't support parse superblocks.)
198
199 Added new flag to mke2fs, -R <raid options>, which allows the user to
200 tell mke2fs about the RAID configuration of the filesystem.  Currently
201 the only supported raid option is "stride" which specifies the width
202 of the RAID stripe.
203
204 Fixed bug in e2fsck where pass1b would bomb out if there were any
205 blocks marked bad in the inode table.
206
207 Fixed rare bug in mke2fs where if the user had a very unlucky number
208 of blocks in a filesystem (probability less than .002) the resulting
209 filesystem would be corrupt in the last block group.
210
211 Fixed bug where if e2fsck tried to allocate a block to fix a
212 filesystem corruption problem and the filesystem had no free blocks,
213 ext2fs_new_block() would loop forever.
214
215 The configure script now checks explicitly to see if "-static" works,
216 since that can't be assumed to be true --- RedHat doesn't install
217 libc-static by default.
218
219 Fixed bug in libext2's block iterator functions where under some
220 cirmcustances, file with holes would cause the bcount parameter to the
221 callback function to be incorrect.  This bug didn't affect any of
222 e2fsprogs programs, but it was discovered by Paul Mackerras, the
223 author of the PPC boot loader.
224
225 Removed use of static variables to store the inode cache in libext2fs.
226 This caused problems if more than one filesystem was accessed via
227 libext2fs (static variables in libraries are generally a bad idea).
228 Again, this didn't affect e2fsprogs programs, but it was discovered by
229 Paul Mackerras.
230
231 Fixed minor bugs and version code drift to assure that e2fsprogs 1.10
232 will compile cleanly with 1.2.13 kernels (even with a.out shared
233 libraries!)
234
235 Programmer's notes:
236 -------------------
237
238 Added new functions to duplicate an ext2 filesystem handle, and its
239 associated substructure.  New functions: ext2fs_dup_handle(),
240 ext2fs_copy_dblist(), ext2fs_badblocks_copy(), ext2fs_copy_bitmap().
241 Other structures, such as the io_channel and the inode_cache, now have
242 a ref count so that they only get freed when they are no longer used
243 by any filesystem handle.  (These functions were added as part of the
244 development effort for an ext2 resizer).
245
246 E2fsprogs 1.09 (April 14, 1997)
247 ===============================
248
249 Fixed bug in mke2fs (really in lib/ext2fs/initialize.c) which was
250 accidentally introduced in the 1.08 release.  The overhead calculation
251 was accidentally removed, which caused ext2fs_initialize() to not
252 notice when the filesystem size needed to be adjusted down because
253 there wasn't enough space in the last block group.
254
255 Fixed bug in version parsing library routine; it was always parsing
256 the library version string, instead of using the passed-in string.
257
258 Clarified chattr man page.
259
260 E2fsprogs 1.08 (April 10, 1997)
261 ===============================
262
263 E2fsck 1.07 was very slow when checking very large filesystems with a
264 lot of files that had hard links (i.e., news spools).  This was fixed
265 by seriously revamping the icount abstraction.  Added a formal test
266 suite for the icount abstraction.
267
268 Debugfs now has a "-l" option to the "ls" command, which lists the
269 inode number, permissions, owner, group, size, and name of the files
270 in the directory.
271
272 Fix a bug in e2fsck where when a directory had its blocks moved to
273 another location during the pass 1b processing, the directory block
274 list wasn't updated, so pass 2 wouldn't check (and correct) the
275 correct directory block.
276
277 E2fsck will now treat inodes which contain blocks which are claimed by
278 the filesystem metadata by treating them as multiply claimed blocks.
279 This way, the data in those blocks can be copied to a new block during
280 the pass 1b--1d processing.
281
282 E2fsck will attempt to determine the correct superblock number and
283 display it in the diagnostic and warning messages if possible.
284
285 Add support for a new (incompatible) feature, "sparse_super".  This
286 feature reduces the number of blocks which contain copies of backup
287 superblocks and block group descriptors.  (It is only an incompatible
288 feature because of a bug in ext2_free_blocks.)  mke2fs and tune2fs now
289 support a new -s option; e2fsck will recognize filesystems built with
290 this feature turned on.
291
292 E2fsck now checks the library to make sure is the correct version,
293 using new library functions.  (This helps to diagnose incorrectly
294 installed e2fsprogs distributions.)
295
296 Dumpe2fs now prints more information; its now prints the the
297 filesystem revision number, the filesystem sparse_super feature (if
298 present), the block ranges for each block group, and the offset from
299 the beginning of the block group.
300
301 Mke2fs now distributes the inode and block bitmap blok so that the
302 won't be concentrated in one or two disks in RAID/striping setups.
303 Also, if the user chooses a 2k or 4k block group, mke2fs will try to
304 choose the largest blocks per group that be chosen.  (For 2k blocks,
305 you can have up to 16384 blocks/group; for 4k blocks, you can have up
306 to 32768 blocks/group.)  Previously mke2fs would not allow
307 specification of more than 8192 blocks per group, even if you were
308 using a 2k or 4k block group.
309
310 Programmer's notes:
311 -------------------
312
313 Added a new function ext2fs_create_icount2() which takes a "hint"
314 argument.  This hint argument presets the icount array with the list
315 of inodes which actually need to be in the icount array.  This really
316 helps to speed up e2fsck.
317
318 Added a new function ext2fs_icount_validate() which checks the rep
319 invariant for the icount structure.  This is used mostly for testing.
320
321 The error mesasage given when a bad inode number is passed to
322 test_generic_bitmap to reflect EXT2FS_TEST_ERROR (instead of
323 EXT2FS_UNMARK_ERROR).
324
325 Added a new function ext2fs_set_dir_block which sets the block of a
326 dblist entry, given the directory inode and blockcnt.
327
328 Added a new function ext2fs_get_library_version() which returns the
329 current library version, and ext2fs_parse_version_string() which
330 returns a version number based on a e2fsprogs version string.
331
332 The icount functions will return EINVAL if the passed in inode number
333 is out of bounds.
334
335 E2fsprogs 1.07 (March 9, 1997)
336 ==============================
337
338 E2fsck is now uses much less memory when checking really large
339 filesystems (or rather, filesystems with a large number of inodes).
340 Previously a filesystem with 1 million inodes required 4 megabytes of
341 memory to store inode count statistics; that storage requirement has
342 now been reduced to roughly half a megabyte.
343
344 E2fsck can now properly deal with bad blocks appearing inside the
345 inode table.  Instead of trying to relocate the inode table (which
346 often failed because there wasn't enough space), the inodes in the bad
347 block are marked as in use.
348
349 E2fsck will automatically try to use the backup superblocks if the
350 primary superblocks have a bad magic number or have missing meta-data
351 blocks (or meta-data blocks which are out of range).
352
353 E2fsck's pass 3 has been made more efficient; most noticeable on
354 filesystems with a very large number of directories.
355
356 Completely revamped e2fsck's system of printing problem reports.  It
357 is now table driven, to make them more easily customizeable and
358 extendable.  Error messages which can be printed out during preen mode
359 are now one line long.
360
361 Fixed e2fsck's filesystem swapping code so that it won't try to swap
362 fast symbolic links or deleted files.
363
364 Fixed e2fsck core dumping when fixing a filesystem which has no
365 directories (not even a root directory).
366
367 Added a check to e2fsck to make sure that the length of every
368 directory entry is a multiple of 4 (since the kernel complains if it
369 isn't).
370
371 Added a check to e2fsck to make sure that a directory entry isn't a
372 link to the root directory, since that isn't allowed.
373
374 Added a check to e2fsk to now make sure the '.' and '..' directory
375 entries are null terminated, since the 2.0 kernel requires it.
376
377 Added check to write_bitmaps() to make sure the superblock doesn't get
378 trashed if the inode or block bitmap is marked as being block zero.
379
380 Added checking of the new feature set fields in the superblock, to
381 avoid dealing with new filesystem features that this package wasn't
382 set up to handle.
383
384 Fixed a fencepost error in ext2fs_new_block() which would occasionally
385 try to allocate a block beyond the end of a filesystem.
386
387 When the UUID library picks a random IEEE 802 address (because it
388 can't find one from a network card), it sets the multicast bit, to
389 avoid conflicting with a legitimate IEEE 802 address.
390
391 Mke2fs now sets the root directory's owner to be the real uid of the
392 user running mke2fs.  If the real uid is non-zero, it also sets
393 the group ownership of the root directory to be the real group-id of
394 the user running mke2fs.
395
396 Mke2fs now has more intelligent error checking when it is given a
397 non-existent device.
398
399 When badblocks is given the -vv option, it now updates the block that
400 it is currently testing on every block.
401
402 Fixed a bug in fsck where it wouldn't modify the PATH envirnoment
403 currently correctly if PATH wasn't already set.
404
405 Shared libraries now built with dependencies.  This allows the shared
406 library files to be used with dlopen(); it also makes the transition
407 to libc 6 easier, since ld.so can tell which libc a particular shared
408 library expects to use.
409
410 Programmer's notes:
411 -------------------
412
413 Added new abstraction (defined in dblist.c) for maintaining a list of
414 blocks which belongs to directories.  This is used in e2fsck and other
415 programs which need to iterate over all directories.
416
417 Added new functions which test to see if a contiguous range of blocks
418 (or inodes) are available.  (ext2fs_*_bitmap_range).
419
420 Added new function (ext2_inode_has_valid_blocks) which returns true if
421 an inode has valid blocks.  (moved from e2fsck code).
422
423 Added new function (ext2fs_allocate_tables) which allocates the
424 meta-data blocks as part of initializing a filesystem.  (moved from
425 mke2fs code).
426
427 Added a new I/O manager for testing purposes.  It will either allow a
428 program to intercept I/O requests, or print debugging messages to
429 trace the activity of a program using the I/O manager.
430
431 The badblocks_list functions now store the bad blocks in a sorted
432 order, and use a binary search to speed up badblocks_list_test.
433
434 The inode scan function ext2fs_get_next_inode() may now return a soft
435 error returns: MISSING_INODE_TABLE and BAD_BLOCK_IN_INODE_TABLE in
436 those cases where part of an inode table is missing or there is a bad
437 block in the inode table.  
438
439 Added a new function (ext2fs_block_iterate2) which adds new arguments to
440 the callback function to return a pointer (block and offset) to the
441 reference of the block.
442
443 Added new function (ext2fs_inode_scan_goto_blockgroup) which allows an
444 application to jump to a particular block group while doing an inode
445 scan.
446
447 The badblocks list functions were renamed from badblocks_* to
448 ext2fs_badblocks_*.  Backwards compatibility functions are available
449 for now, but programs should be modified to use the new interface.
450
451 Some of the library functions were reorganized into separate files to
452 reduce the size of some programs which statically link against the
453 ext2 library.
454
455 Put in some miscellaneous fixes for the Alpha platform.
456
457
458 E2fsprogs 1.06 (October 7, 1996)
459 ================================
460
461 Fixed serious bug in e2fsck: if the block descriptors are bad, don't
462 smash the backup copies in ext2fs_close().  (The problem was that when
463 e2fsck -p discovered the problem, while it was closing the filesystem
464 and exiting, it was also blowing away the backup superblocks on the
465 disk, which was less than friendly.)  We now make it the case that we
466 only write out the backup superblock and the back block descriptors if
467 the filesystem is completely free from problems.
468
469 Fixed a bug in block_interate in the lib/ext2fs library which caused
470 e2fsck to fail on GNU Hurd-created filesystems.
471
472 Add support for Linux/FT's bootloader, which actually uses
473 EXT2_BOOT_LOADER, and sets its mode bits which caused e2fsck to want
474 to clear the inode.
475
476 Add support for the "A" (no atime update) attribute.  (Note: this
477 attribute is not yet in production kernels.)
478
479 The test suite is not automatically run when doing a "make all" from
480 the top level directory.  Users should manually run "make check" if
481 they wish to run the test suite.
482
483 Upon a preenhalt(), make the printed message more explicit that
484 running e2fsck "MANAULLY" means without the -p or -a options.
485
486 In e2fsck, if a disconnected inode is zero-length, offer to clear it
487 instead of offering to connect it to lost+found.
488
489 In e2fsck, if a filesystem was just unmounted uncleanly, and needs
490 e2fsck to be run over it, change e2fsck to explicitly display this
491 fact.
492
493 For dumpe2fs and e2fsck, cause the -V option to print out which
494 version of the ext2fs library is actually getting used.  (This will
495 help detect mismatches of using a 1.06 utility with a 1.05 library,
496 etc.)
497
498 Programmers' notes:
499 -------------------
500
501 EXT2_SWAP_BYTES was changed to EXT2_FLAG_SWAP_BYTES, which better fits
502 the naming convention.
503
504 In ext2fs_initialize(), make sure the description for the inode bitmap
505 is correctly initialize.
506
507 Fixed minor type typo in ext2fs_allocate_generic_bitmap();
508
509 E2fsprogs 1.05 (September 7, 1996)
510 ==================================
511
512 Add support for new fields in the ext2 superblock --- volume name,
513 volume UUID, and last mounted field.  Dumpe2fs displays these fields,
514 tune2fs and mke2fs allows you to set them.  E2fsck will automatically
515 generate a UUID for those volumes that don't have them.  
516
517 Put in support for e2fsck to recognize HURD specific ext2 features ---
518 most notably, the translator block.  The e2fsprogs tools will now use
519 the creator_os field in the superblock to correctly handle different
520 OS-specific variants of the ext2 filesystem.
521
522 E2fsck now fixes inodes which have a the deletion time set, but which
523 have a non-zero i_link_count field by offering to clear the deletion
524 time.  Previously e2fsck assumed that the inode was deleted (per 0.3c
525 ext2 kernel behavior) and offered to unlink the file.
526
527 If e2fsck sets the clean bit, but nothing else, set the exit code
528 FSCK_NONDESTRUCT.  After all, e2fsck did fix a filesystem error --- it
529 set the filesystem valid bit when it was previously cleared.  :-) This
530 was needed to make the HURD fsck driver happy.
531
532 If the  user  refuses to attach an  unattached  inode, e2fsck  will no
533 longer set the inode's link count.  Otherwise, the  inode would end up
534 getting marked as unused, which might cause loss of data later.
535
536 Make the message issued by e2fsck when the superblock is corrupt less
537 confusing for users.  It now mentions that another reason for the
538 "corrupt superblock" message might be that the partition might not be
539 an ext2 filesystem at all (it might swap, msdos filesystem, ufs, etc.)
540
541 Make the libext2 library more robuest so that e2fsck won't coredump on
542 an illegal superblock where the blocksize is zero.  (f_crashdisk is
543 the test case).
544
545 By default, create filesystems where the default checkinterval is 6
546 months (180 days).  Linux servers can be robust enough that 20 reboots
547 can be a long, long time.
548
549 Added configure flag --enable-old-bitops, which forces the bitops to
550 use the old (native) bitmask operations.  By default on the sparc
551 platform, the standard ext2 bit ordering is now used.
552
553 Added a new feature to e2fsck to byte-swap filesystems; this can be
554 used to convert old m68k filesystems to use the standard byte-order
555 storage for the superblock, inodes, and directory blocks.  This
556 function is invoked by using the '-s' option to e2fsck.
557
558 Debugfs's "dump" command has been enhanced so that it writes out the
559 exact size of the file so that the nulls at the end of the file are
560 eliminated.  The command also accept a new "-p" option which will
561 attempt preserve to preserve the ownernship, permissions, and
562 file modification/access times.
563
564 Debugfs has two new options, -f and -R.  The -R option allows the user
565 to execute a single debugfs command from the command line.  The -f
566 option allows the user to specify a "command file" containing debugfs
567 commands which will get executed.
568
569 Dumpe2fs now pretty prints the check interval, instead of just
570 printing the check interval as a number of seconds.
571
572 Fix bugs in debugfs: the params command when no filesystem is opened
573 no longer causes a core dump.  It is now possible to unlink a file
574 when a pathame containing a '/' is specified.
575
576 Tune2fs has a new -C option which sets the number of times the
577 filesystem has been mounted.
578
579 Fix the chattr '-v' option so that it actually works.  Chattr was
580 being buggy about the -v option parsing.
581
582 Programmers' notes:
583 -------------------
584
585 The directory lib/uuid contains a set of library routines to generate
586 DCE compatible UUIDs.  
587
588 Extended ext2fs_namei() to handle symbolic links.  Added new function
589 ext2fs_nami_follow() which will follow last symbolic link in the case
590 where the pathname points to a sym link.
591
592 The ext2fs_block_iterate function will now return the HURD translator
593 block, if present.  The new flag BLOCK_FLAG_DATA_ONLY will cause the
594 iterator to return data blocks only.  The ext2fs.h file now defines
595 constants BLOCK_COUNT_IND, BLOCK_COUNT_DIND, BLOCK_COUNT_TIND, and
596 BLOCK_COUNT_TRANSLATOR, which are the magic values passed in the block
597 count field of the iterator callback function.
598
599 The test script driver now takes an optional second argument, which is
600 the test case to be run.  This allows you to run a test case without
601 needing to run the entire test suite.
602
603 On Linux ELF systems, install the .so files in the correct places
604 (/usr/lib).  The .so files must be stored in the same directory as the
605 .a files.
606
607 Fixed miscellaneous HURD compilation issues with header file being
608 included in the right order.
609
610 Fixed debugfs so that it resets optind to zero, not one, since setting
611 optind to zero is more correct.
612
613
614 E2fsprogs 1.04 (May 16, 1996)
615 =============================
616
617 First "official" (1.03 was a limited release only) to support building
618 e2fsprogs under Linux 2.0 kernels (as well as late model 1.3 and 1.99
619 kernels).
620
621 This package includes a RPM specs file, that it can be built using the
622 RedHat Package Manager.
623
624 E2fsck now prints a hint that if there are lots of incorrectly located
625 inode bitmaps, block bitmaps, and inode table blocks, the user might
626 want to try using e2fsck -b 8193 first, to see if that fares any
627 better.
628
629 For ext2 filesystem written with the hurd, debugfs will now print out
630 the translator field when printing an inode structure.
631
632 Lots of miscellaneous linking/installation cleanups:
633
634   Libraries are now linked using a relative pathname, instead of
635   relying on -L working correct.  It doesn't, in many cases, including
636   current versions of GNU ld.  This guarantees that the build tree is
637   linking with the right libraries, instead of the ones installed in
638   /usr/lib.
639
640   Header files, man pages, and the et/ss shell scripts are now
641   generated using a custom substitution script, instead of relying on
642   the configure script.  This prevents needless recompilation of
643   files; in addition, the custom substitution script is much faster.
644
645   e2fsck may now be linked dynamically, by using the
646   --enable-dynamic-e2fsck flag to configure.  This is not recommended,
647   since it increases e2fsck's dependence on other files, but some
648   people need to save disk space, and other critical programs on their
649   systems were being linked dynamically anyway.
650
651   Programs such as fsck which didn't need to be linked against
652   libext2fs (or mke2fs which didn't need to be linked against libe2p)
653   only link against libraries they actually need.  Otherwise, those
654   programs would require the presense of libraries that otherwise
655   could be removed from a rescuse diskette.
656
657   The ss include files are now installed correctly so they can
658   actually be used by another package.
659
660   If the profiling libraries are built, they are now installed on a
661   "make install-libs".
662
663
664 E2fsprogs 1.03 (March 27, 1996)
665 ===============================
666
667 Change the m68k bit numbering for bitmasks to match the bit numbering
668 used by all other ext2 implementations.  (This change was requested by
669 the m68k kernel development team.)
670
671 Support (in-development) filesystem format revision which supports
672 (among other things) dynamically sized inodes.
673
674 Fixed a bug in the ext2 library so that an intelligent error is
675 returned if mke2fs is run with a ridiculously small number of blocks
676 for a partition.
677
678 Fixed a bug in the ext2 library which required that the device be
679 openable in read/write mode in order to determine its size.  This
680 caused e2fsck -n to require read/write access when it was not
681 previously necessary.
682
683 Fixed a bug in e2fsck which casued it to occasionally fail the test
684 suite depending on which version of the floating point library it was
685 using.
686
687 Fixed a bug in e2fsck so that it now halts with a fatal error when
688 certain superblock consistency checks fail.  Previously it continued
689 running e2fsck, with some potential confusing/damaging consequences.
690
691 Added new flag to fsck which allows the root to be checked in parallel
692 with other filesytems.  This is not the safest thing in the world to
693 do, but some system administrators really wanted it.
694
695 Fixed -Wall flames in lib/ss.
696
697
698 E2fsprogs 1.02 (January 16, 1996)
699 =================================
700
701 Fix to allow e2fsprogs to be compiled on recent 1.3 (pl45+) kernels.
702
703 Change e2fsck to print statistics of how many non-contiguous files are
704 on the system.  Note that a file which is larger than 8k blocks, it is
705 guaranteed to be non-contiguous.
706
707 In mke2fs, print a warning message if a user tries to format a whole
708 disk (/dev/hda versus /dev/hda1).  If a user really wants to format a
709 whole disk, the -F (force) option forces mke2fs to format a whole disk
710 as a filesytem.
711
712 Fix a bug in fsck where in some cases it might start checking
713 partitions in the next pass before it finishes checking partitions in
714 the current pass.  This still won't cause two partitions on the same
715 disk will be checked, so it's rarely a problem in real life.
716
717 Patch lsattr so that it won't hang when checking a named pipe.
718
719 Minor compilation fixes:
720         * Fix the order of libraries that were linked in debugfs.
721         * Allow the sources to be compiled with -ansi turned on.