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