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