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