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