blob: 360f0ecddade8373ad17b3e9608216dd8ca4115a [file] [log] [blame]
Theodore Ts'oae851481997-04-29 18:13:24 +00001E2fsprogs 1.10 (April 24, 1997)
2===============================
3
4Mke2fs once again defaults to creating revision #0 filesystems, since
5people were complaining about breaking compatibility with 1.2 kernels.
6Warning messages were added to the mke2fs and tune2fs man pages that
7the sparse superblock option isn't supported by most kernels yet (1.2
8and 2.0 both don't support parse superblocks.)
9
10Added new flag to mke2fs, -R <raid options>, which allows the user to
11tell mke2fs about the RAID configuration of the filesystem. Currently
12the only supported raid option is "stride" which specifies the width
13of the RAID stripe.
14
15Fixed bug in e2fsck where pass1b would bomb out if there were any
16blocks marked bad in the inode table.
17
18Fixed rare bug in mke2fs where if the user had a very unlucky number
19of blocks in a filesystem (probability less than .002) the resulting
20filesystem would be corrupt in the last block group.
21
22Fixed bug where if e2fsck tried to allocate a block to fix a
23filesystem corruption problem and the filesystem had no free blocks,
24ext2fs_new_block() would loop forever.
25
26The configure script now checks explicitly to see if "-static" works,
27since that can't be assumed to be true --- RedHat doesn't install
28libc-static by default.
29
30Fixed bug in libext2's block iterator functions where under some
31cirmcustances, file with holes would cause the bcount parameter to the
32callback function to be incorrect. This bug didn't affect any of
33e2fsprogs programs, but it was discovered by Paul Mackerras, the
34author of the PPC boot loader.
35
36Removed use of static variables to store the inode cache in libext2fs.
37This caused problems if more than one filesystem was accessed via
38libext2fs (static variables in libraries are generally a bad idea).
39Again, this didn't affect e2fsprogs programs, but it was discovered by
40Paul Mackerras.
41
42Fixed minor bugs and version code drift to assure that e2fsprogs 1.10
43will compile cleanly with 1.2.13 kernels (even with a.out shared
44libraries!)
45
46Programmer's notes:
47-------------------
48
49Added new functions to duplicate an ext2 filesystem handle, and its
50associated substructure. New functions: ext2fs_dup_handle(),
51ext2fs_copy_dblist(), ext2fs_badblocks_copy(), ext2fs_copy_bitmap().
52Other structures, such as the io_channel and the inode_cache, now have
53a ref count so that they only get freed when they are no longer used
54by any filesystem handle. (These functions were added as part of the
55development effort for an ext2 resizer).
56
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +000057E2fsprogs 1.09 (April 14, 1997)
58===============================
59
60Fixed bug in mke2fs (really in lib/ext2fs/initialize.c) which was
61accidentally introduced in the 1.08 release. The overhead calculation
62was accidentally removed, which caused ext2fs_initialize() to not
63notice when the filesystem size needed to be adjusted down because
64there wasn't enough space in the last block group.
65
66Fixed bug in version parsing library routine; it was always parsing
67the library version string, instead of using the passed-in string.
68
69Clarified chattr man page.
70
Theodore Ts'o24757fa1997-04-29 17:39:27 +000071E2fsprogs 1.08 (April 10, 1997)
72===============================
73
74E2fsck 1.07 was very slow when checking very large filesystems with a
75lot of files that had hard links (i.e., news spools). This was fixed
76by seriously revamping the icount abstraction. Added a formal test
77suite for the icount abstraction.
78
79Debugfs now has a "-l" option to the "ls" command, which lists the
80inode number, permissions, owner, group, size, and name of the files
81in the directory.
82
83Fix a bug in e2fsck where when a directory had its blocks moved to
84another location during the pass 1b processing, the directory block
85list wasn't updated, so pass 2 wouldn't check (and correct) the
86correct directory block.
87
88E2fsck will now treat inodes which contain blocks which are claimed by
89the filesystem metadata by treating them as multiply claimed blocks.
90This way, the data in those blocks can be copied to a new block during
91the pass 1b--1d processing.
92
93E2fsck will attempt to determine the correct superblock number and
94display it in the diagnostic and warning messages if possible.
95
96Add support for a new (incompatible) feature, "sparse_super". This
97feature reduces the number of blocks which contain copies of backup
98superblocks and block group descriptors. (It is only an incompatible
99feature because of a bug in ext2_free_blocks.) mke2fs and tune2fs now
100support a new -s option; e2fsck will recognize filesystems built with
101this feature turned on.
102
103E2fsck now checks the library to make sure is the correct version,
104using new library functions. (This helps to diagnose incorrectly
105installed e2fsprogs distributions.)
106
107Dumpe2fs now prints more information; its now prints the the
108filesystem revision number, the filesystem sparse_super feature (if
109present), the block ranges for each block group, and the offset from
110the beginning of the block group.
111
112Mke2fs now distributes the inode and block bitmap blok so that the
113won't be concentrated in one or two disks in RAID/striping setups.
114Also, if the user chooses a 2k or 4k block group, mke2fs will try to
115choose the largest blocks per group that be chosen. (For 2k blocks,
116you can have up to 16384 blocks/group; for 4k blocks, you can have up
117to 32768 blocks/group.) Previously mke2fs would not allow
118specification of more than 8192 blocks per group, even if you were
119using a 2k or 4k block group.
120
121Programmer's notes:
122-------------------
123
124Added a new function ext2fs_create_icount2() which takes a "hint"
125argument. This hint argument presets the icount array with the list
126of inodes which actually need to be in the icount array. This really
127helps to speed up e2fsck.
128
129Added a new function ext2fs_icount_validate() which checks the rep
130invariant for the icount structure. This is used mostly for testing.
131
132The error mesasage given when a bad inode number is passed to
133test_generic_bitmap to reflect EXT2FS_TEST_ERROR (instead of
134EXT2FS_UNMARK_ERROR).
135
136Added a new function ext2fs_set_dir_block which sets the block of a
137dblist entry, given the directory inode and blockcnt.
138
139Added a new function ext2fs_get_library_version() which returns the
140current library version, and ext2fs_parse_version_string() which
141returns a version number based on a e2fsprogs version string.
142
143The icount functions will return EINVAL if the passed in inode number
144is out of bounds.
145
Theodore Ts'o21c84b71997-04-29 16:15:03 +0000146E2fsprogs 1.07 (March 9, 1997)
147==============================
148
149E2fsck is now uses much less memory when checking really large
150filesystems (or rather, filesystems with a large number of inodes).
151Previously a filesystem with 1 million inodes required 4 megabytes of
152memory to store inode count statistics; that storage requirement has
153now been reduced to roughly half a megabyte.
154
155E2fsck can now properly deal with bad blocks appearing inside the
156inode table. Instead of trying to relocate the inode table (which
157often failed because there wasn't enough space), the inodes in the bad
158block are marked as in use.
159
160E2fsck will automatically try to use the backup superblocks if the
161primary superblocks have a bad magic number or have missing meta-data
162blocks (or meta-data blocks which are out of range).
163
164E2fsck's pass 3 has been made more efficient; most noticeable on
165filesystems with a very large number of directories.
166
167Completely revamped e2fsck's system of printing problem reports. It
168is now table driven, to make them more easily customizeable and
169extendable. Error messages which can be printed out during preen mode
170are now one line long.
171
172Fixed e2fsck's filesystem swapping code so that it won't try to swap
173fast symbolic links or deleted files.
174
175Fixed e2fsck core dumping when fixing a filesystem which has no
176directories (not even a root directory).
177
178Added a check to e2fsck to make sure that the length of every
179directory entry is a multiple of 4 (since the kernel complains if it
180isn't).
181
182Added a check to e2fsck to make sure that a directory entry isn't a
183link to the root directory, since that isn't allowed.
184
185Added a check to e2fsk to now make sure the '.' and '..' directory
186entries are null terminated, since the 2.0 kernel requires it.
187
188Added check to write_bitmaps() to make sure the superblock doesn't get
189trashed if the inode or block bitmap is marked as being block zero.
190
191Added checking of the new feature set fields in the superblock, to
192avoid dealing with new filesystem features that this package wasn't
193set up to handle.
194
195Fixed a fencepost error in ext2fs_new_block() which would occasionally
196try to allocate a block beyond the end of a filesystem.
197
198When the UUID library picks a random IEEE 802 address (because it
199can't find one from a network card), it sets the multicast bit, to
200avoid conflicting with a legitimate IEEE 802 address.
201
202Mke2fs now sets the root directory's owner to be the real uid of the
203user running mke2fs. If the real uid is non-zero, it also sets
204the group ownership of the root directory to be the real group-id of
205the user running mke2fs.
206
207Mke2fs now has more intelligent error checking when it is given a
208non-existent device.
209
210When badblocks is given the -vv option, it now updates the block that
211it is currently testing on every block.
212
213Fixed a bug in fsck where it wouldn't modify the PATH envirnoment
214currently correctly if PATH wasn't already set.
215
216Shared libraries now built with dependencies. This allows the shared
217library files to be used with dlopen(); it also makes the transition
218to libc 6 easier, since ld.so can tell which libc a particular shared
219library expects to use.
220
221Programmer's notes:
222-------------------
223
224Added new abstraction (defined in dblist.c) for maintaining a list of
225blocks which belongs to directories. This is used in e2fsck and other
226programs which need to iterate over all directories.
227
228Added new functions which test to see if a contiguous range of blocks
229(or inodes) are available. (ext2fs_*_bitmap_range).
230
231Added new function (ext2_inode_has_valid_blocks) which returns true if
232an inode has valid blocks. (moved from e2fsck code).
233
234Added new function (ext2fs_allocate_tables) which allocates the
235meta-data blocks as part of initializing a filesystem. (moved from
236mke2fs code).
237
238Added a new I/O manager for testing purposes. It will either allow a
239program to intercept I/O requests, or print debugging messages to
240trace the activity of a program using the I/O manager.
241
242The badblocks_list functions now store the bad blocks in a sorted
243order, and use a binary search to speed up badblocks_list_test.
244
245The inode scan function ext2fs_get_next_inode() may now return a soft
246error returns: MISSING_INODE_TABLE and BAD_BLOCK_IN_INODE_TABLE in
247those cases where part of an inode table is missing or there is a bad
248block in the inode table.
249
250Added a new function (ext2fs_block_iterate2) which adds new arguments to
251the callback function to return a pointer (block and offset) to the
252reference of the block.
253
254Added new function (ext2fs_inode_scan_goto_blockgroup) which allows an
255application to jump to a particular block group while doing an inode
256scan.
257
258The badblocks list functions were renamed from badblocks_* to
259ext2fs_badblocks_*. Backwards compatibility functions are available
260for now, but programs should be modified to use the new interface.
261
262Some of the library functions were reorganized into separate files to
263reduce the size of some programs which statically link against the
264ext2 library.
265
266Put in some miscellaneous fixes for the Alpha platform.
267
Theodore Ts'o5c576471997-04-29 15:29:49 +0000268
269E2fsprogs 1.06 (October 7, 1996)
270================================
271
272Fixed serious bug in e2fsck: if the block descriptors are bad, don't
273smash the backup copies in ext2fs_close(). (The problem was that when
274e2fsck -p discovered the problem, while it was closing the filesystem
275and exiting, it was also blowing away the backup superblocks on the
276disk, which was less than friendly.) We now make it the case that we
277only write out the backup superblock and the back block descriptors if
278the filesystem is completely free from problems.
279
280Fixed a bug in block_interate in the lib/ext2fs library which caused
281e2fsck to fail on GNU Hurd-created filesystems.
282
283Add support for Linux/FT's bootloader, which actually uses
284EXT2_BOOT_LOADER, and sets its mode bits which caused e2fsck to want
285to clear the inode.
286
287Add support for the "A" (no atime update) attribute. (Note: this
288attribute is not yet in production kernels.)
289
290The test suite is not automatically run when doing a "make all" from
291the top level directory. Users should manually run "make check" if
292they wish to run the test suite.
293
294Upon a preenhalt(), make the printed message more explicit that
295running e2fsck "MANAULLY" means without the -p or -a options.
296
297In e2fsck, if a disconnected inode is zero-length, offer to clear it
298instead of offering to connect it to lost+found.
299
300In e2fsck, if a filesystem was just unmounted uncleanly, and needs
301e2fsck to be run over it, change e2fsck to explicitly display this
302fact.
303
304For dumpe2fs and e2fsck, cause the -V option to print out which
305version of the ext2fs library is actually getting used. (This will
306help detect mismatches of using a 1.06 utility with a 1.05 library,
307etc.)
308
309Programmers' notes:
310-------------------
311
312EXT2_SWAP_BYTES was changed to EXT2_FLAG_SWAP_BYTES, which better fits
313the naming convention.
314
315In ext2fs_initialize(), make sure the description for the inode bitmap
316is correctly initialize.
317
318Fixed minor type typo in ext2fs_allocate_generic_bitmap();
319
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000320E2fsprogs 1.05 (September 7, 1996)
321==================================
322
323Add support for new fields in the ext2 superblock --- volume name,
324volume UUID, and last mounted field. Dumpe2fs displays these fields,
325tune2fs and mke2fs allows you to set them. E2fsck will automatically
326generate a UUID for those volumes that don't have them.
327
328Put in support for e2fsck to recognize HURD specific ext2 features ---
329most notably, the translator block. The e2fsprogs tools will now use
330the creator_os field in the superblock to correctly handle different
331OS-specific variants of the ext2 filesystem.
332
333E2fsck now fixes inodes which have a the deletion time set, but which
334have a non-zero i_link_count field by offering to clear the deletion
335time. Previously e2fsck assumed that the inode was deleted (per 0.3c
336ext2 kernel behavior) and offered to unlink the file.
337
338If e2fsck sets the clean bit, but nothing else, set the exit code
339FSCK_NONDESTRUCT. After all, e2fsck did fix a filesystem error --- it
340set the filesystem valid bit when it was previously cleared. :-) This
341was needed to make the HURD fsck driver happy.
342
343If the user refuses to attach an unattached inode, e2fsck will no
344longer set the inode's link count. Otherwise, the inode would end up
345getting marked as unused, which might cause loss of data later.
346
347Make the message issued by e2fsck when the superblock is corrupt less
348confusing for users. It now mentions that another reason for the
349"corrupt superblock" message might be that the partition might not be
350an ext2 filesystem at all (it might swap, msdos filesystem, ufs, etc.)
351
352Make the libext2 library more robuest so that e2fsck won't coredump on
353an illegal superblock where the blocksize is zero. (f_crashdisk is
354the test case).
355
356By default, create filesystems where the default checkinterval is 6
357months (180 days). Linux servers can be robust enough that 20 reboots
358can be a long, long time.
359
360Added configure flag --enable-old-bitops, which forces the bitops to
361use the old (native) bitmask operations. By default on the sparc
362platform, the standard ext2 bit ordering is now used.
363
364Added a new feature to e2fsck to byte-swap filesystems; this can be
365used to convert old m68k filesystems to use the standard byte-order
366storage for the superblock, inodes, and directory blocks. This
367function is invoked by using the '-s' option to e2fsck.
368
369Debugfs's "dump" command has been enhanced so that it writes out the
370exact size of the file so that the nulls at the end of the file are
371eliminated. The command also accept a new "-p" option which will
372attempt preserve to preserve the ownernship, permissions, and
373file modification/access times.
374
375Debugfs has two new options, -f and -R. The -R option allows the user
376to execute a single debugfs command from the command line. The -f
377option allows the user to specify a "command file" containing debugfs
378commands which will get executed.
379
380Dumpe2fs now pretty prints the check interval, instead of just
381printing the check interval as a number of seconds.
382
383Fix bugs in debugfs: the params command when no filesystem is opened
384no longer causes a core dump. It is now possible to unlink a file
385when a pathame containing a '/' is specified.
386
387Tune2fs has a new -C option which sets the number of times the
388filesystem has been mounted.
389
390Fix the chattr '-v' option so that it actually works. Chattr was
391being buggy about the -v option parsing.
392
393Programmers' notes:
394-------------------
395
396The directory lib/uuid contains a set of library routines to generate
397DCE compatible UUIDs.
398
399Extended ext2fs_namei() to handle symbolic links. Added new function
400ext2fs_nami_follow() which will follow last symbolic link in the case
401where the pathname points to a sym link.
402
403The ext2fs_block_iterate function will now return the HURD translator
404block, if present. The new flag BLOCK_FLAG_DATA_ONLY will cause the
405iterator to return data blocks only. The ext2fs.h file now defines
406constants BLOCK_COUNT_IND, BLOCK_COUNT_DIND, BLOCK_COUNT_TIND, and
407BLOCK_COUNT_TRANSLATOR, which are the magic values passed in the block
408count field of the iterator callback function.
409
410The test script driver now takes an optional second argument, which is
411the test case to be run. This allows you to run a test case without
412needing to run the entire test suite.
413
414On Linux ELF systems, install the .so files in the correct places
415(/usr/lib). The .so files must be stored in the same directory as the
416.a files.
417
418Fixed miscellaneous HURD compilation issues with header file being
419included in the right order.
420
421Fixed debugfs so that it resets optind to zero, not one, since setting
422optind to zero is more correct.
423
424
Theodore Ts'oa4d09611997-04-29 14:28:00 +0000425E2fsprogs 1.04 (May 16, 1996)
426=============================
427
428First "official" (1.03 was a limited release only) to support building
429e2fsprogs under Linux 2.0 kernels (as well as late model 1.3 and 1.99
430kernels).
431
432This package includes a RPM specs file, that it can be built using the
433RedHat Package Manager.
434
435E2fsck now prints a hint that if there are lots of incorrectly located
436inode bitmaps, block bitmaps, and inode table blocks, the user might
437want to try using e2fsck -b 8193 first, to see if that fares any
438better.
439
440For ext2 filesystem written with the hurd, debugfs will now print out
441the translator field when printing an inode structure.
442
443Lots of miscellaneous linking/installation cleanups:
444
445 Libraries are now linked using a relative pathname, instead of
446 relying on -L working correct. It doesn't, in many cases, including
447 current versions of GNU ld. This guarantees that the build tree is
448 linking with the right libraries, instead of the ones installed in
449 /usr/lib.
450
451 Header files, man pages, and the et/ss shell scripts are now
452 generated using a custom substitution script, instead of relying on
453 the configure script. This prevents needless recompilation of
454 files; in addition, the custom substitution script is much faster.
455
456 e2fsck may now be linked dynamically, by using the
457 --enable-dynamic-e2fsck flag to configure. This is not recommended,
458 since it increases e2fsck's dependence on other files, but some
459 people need to save disk space, and other critical programs on their
460 systems were being linked dynamically anyway.
461
462 Programs such as fsck which didn't need to be linked against
463 libext2fs (or mke2fs which didn't need to be linked against libe2p)
464 only link against libraries they actually need. Otherwise, those
465 programs would require the presense of libraries that otherwise
466 could be removed from a rescuse diskette.
467
468 The ss include files are now installed correctly so they can
469 actually be used by another package.
470
471 If the profiling libraries are built, they are now installed on a
472 "make install-libs".
473
474
Theodore Ts'o7f88b041997-04-26 14:48:50 +0000475E2fsprogs 1.03 (March 27, 1996)
476===============================
477
478Change the m68k bit numbering for bitmasks to match the bit numbering
479used by all other ext2 implementations. (This change was requested by
480the m68k kernel development team.)
481
482Support (in-development) filesystem format revision which supports
483(among other things) dynamically sized inodes.
484
485Fixed a bug in the ext2 library so that an intelligent error is
486returned if mke2fs is run with a ridiculously small number of blocks
487for a partition.
488
489Fixed a bug in the ext2 library which required that the device be
490openable in read/write mode in order to determine its size. This
491caused e2fsck -n to require read/write access when it was not
492previously necessary.
493
494Fixed a bug in e2fsck which casued it to occasionally fail the test
495suite depending on which version of the floating point library it was
496using.
497
498Fixed a bug in e2fsck so that it now halts with a fatal error when
499certain superblock consistency checks fail. Previously it continued
500running e2fsck, with some potential confusing/damaging consequences.
501
502Added new flag to fsck which allows the root to be checked in parallel
503with other filesytems. This is not the safest thing in the world to
504do, but some system administrators really wanted it.
505
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000506Fixed -Wall flames in lib/ss.
507
Theodore Ts'o74becf31997-04-26 14:37:06 +0000508
509E2fsprogs 1.02 (January 16, 1996)
510=================================
511
512Fix to allow e2fsprogs to be compiled on recent 1.3 (pl45+) kernels.
513
514Change e2fsck to print statistics of how many non-contiguous files are
515on the system. Note that a file which is larger than 8k blocks, it is
516guaranteed to be non-contiguous.
517
518In mke2fs, print a warning message if a user tries to format a whole
519disk (/dev/hda versus /dev/hda1). If a user really wants to format a
520whole disk, the -F (force) option forces mke2fs to format a whole disk
521as a filesytem.
522
523Fix a bug in fsck where in some cases it might start checking
524partitions in the next pass before it finishes checking partitions in
525the current pass. This still won't cause two partitions on the same
526disk will be checked, so it's rarely a problem in real life.
527
528Patch lsattr so that it won't hang when checking a named pipe.
529
530Minor compilation fixes:
531 * Fix the order of libraries that were linked in debugfs.
532 * Allow the sources to be compiled with -ansi turned on.