blob: da091cbaf683a333b18f7998e08fba309452fe6d [file] [log] [blame]
Theodore Ts'o14790ed1999-01-12 23:32:52 +00001E2fsprogs 1.14 (January 9, 1999)
2================================
3
4Fix the fstab parsing code so that it can handle blank lines and
5comment characters. Also, missing pass numbers need to be treated as
6zero.
7
8Fixed a bug in e2fsck where under some circumstances (when e2fsck
9needs to restart processing after fixing an egregious inconsistency)
10it would try to access already freed memory.
11
12E2fsck now prints non-printable characters in directory entries and
13pathnames using '^' and 'M-' notation.
14
15Fixed chattr so that it will ignore symbolic links when doing
16recursive descent traversals. For both chattr and lsattr, no longer
17print the version string unless the -V option is given.
18
19Allow the system administrator to directly specify the number of
20inodes desired in the filesystem, for some special cases where this is
21necessary.
22
23Fix portability problems so that e2fsprogs can be compiled under Linux
241.2 systems and Solaris systems.
25
26Update the config.guess file with a more recent version that will
27identify newer Linux platforms.
28
29Programmer's notes
30------------------
31
32Ext2fs_read_inode and ext2fs_write_inode will now return an error if
33an inode number of zero is passed to them.
34
Theodore Ts'o556ad131998-12-19 08:10:58 +000035E2fsprogs 1.13 (December 15, 1998)
36==================================
37
38Fixed a bug in debugfs where an error messages weren't getting printed
39when the ext2 library routines to read inodes returned errors in the
40stat, cmri and rm commands.
41
42Fixed a bug in mke2fs so that if a ridiculous inode ratio parameter is
43provided, it won't create an inode table smaller than the minimum
44number of inodes required for a proper ext2 filesystem.
45
46Fsck now parses the /etc/fstab file directly (instead of using
47getmntent()), so that it can distinguish between a missing pass number
48field and pass number field of zero. This caused problems for
49diskless workstations where all of the filesystems in /etc/fstab have
50an explicit pass number of zero, and fsck could not distinguish this
51from a /etc/fstab file with missing pass numbers.
52
53E2fsck will create a /lost+found directory if there isn't one in the
54filesystem, since it's safer to create the lost+found directory before
55it's needed.
56
57Fixed e2fsck so that it would detect bogus immutable inodes which
58happen to be sockets and FIFO files, and offer to clear them.
59
60If a filesystem has multiple reasons why it needs to be checked, and
61one of the reasons is that it is uncleanly mounted, e2fsck will print
62that as the reason why the filesystem is being checked.
63
64Cleaned up the output routines of mke2fs so that it doesn't overflow
65an 80 column display when formating really big filesystems.
66
67Added a sanity check to e2fsck to make sure that file descriptors 0,
681, 2 are open before opening the hard disk. This avoids a problem
69where a broken program might exec e2fsck with those file descriptors
70closed, which would cause disastrous results if the kernel returns a
71file descriptor for the block device which is also used by FILE *
72stdout.
73
74Fixed up the e2fsck progress reporting functions so that the values
75reliably reach 100% at the completion of all of the e2fsck passes.
76
77Fixed minor documentation bugs in man pages and usage messages.
78
79Programmer's notes:
80-------------------
81
82Fixed a number of lint warnings in the ext2fs library and potential
83portability problems from other OS's header files that might define
84CPP macros for names like "max" and "min".
85
86ext2fs_badblocks_list_add() has been made more efficient when it needs
87to grow the bad blocks list.
88
89Fixed a bug in e2fsck which caused it to dereference a freed pointer
90just before exiting.
91
92Fixed the substition process for generating the mk_cmds and compile_et
93scripts so that they will work outside of the build tree.
94
95Add sanity check to e2fsck so that if an internal routine
96(ext2fs_get_dir_info) returns NULL, avoid dereferencing the pointer
97and causing a core dump. This should never happen, but...
98
Theodore Ts'oa5696711998-07-09 05:38:07 +000099E2fsprogs 1.12 (July 9, 1998)
Theodore Ts'o21d53851998-02-21 03:14:50 +0000100==================================
101
102E2fsprogs now works with glibc (at least with the version shipped wtih
103RedHat 5.0). The ext2fs_llseek() function should now work even with
104i386 ELF shared libraries and if llseek() is not present. We also
105explicitly do a configure test to see if (a) llseek is in libc, and
106(b) if llseek is declared in the system header files. (See standard
107complaints about libc developers don't understand the concept of
108compatibility with previous versions of libc.)
109
Theodore Ts'oc9833a61998-07-05 19:37:53 +0000110The ext2fs library now writes out the block group number in each of
111the superblock copies. This makes it easier to automatically
112determine the starting block group of the filesystem when the block
113group information is trashed.
114
115Added support for the EXT2_FEATURE_INCOMPAT_FILETYPE feature,
Theodore Ts'o101c84f1998-03-24 16:27:11 +0000116which means that e2fsprogs will ignore the high 8 bits of the
117directory entry's name_len field, so that it can be used for other
118purposes.
119
120Added support for the EXT2_FEATURE_RO_COMPAT_LARGE_FILE feature.
121E2fsprogs will now support filesystems with 64-bit sized files.
122
123Added support for the EXT2_FEATURE_COMPAT_DIR_PREALLOC feature.
124
Theodore Ts'o21d53851998-02-21 03:14:50 +0000125Added new program "e2label", contributed by Andries Brouwer. E2label
126provides an easy-to-use interface to modify the filesystem label.
127
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +0000128Fixed bug so that lsattr -v works instead of producing a core dump.
129
Theodore Ts'o21d53851998-02-21 03:14:50 +0000130Fixed a minor bug in mke2fs so that all groups with bad superblock
131backup blocks are printed (not just the first one).
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +0000132
133Mke2fs will check the size of the device, and if the user specifies a
134filesystem size larger than the apparent size of the device it will
135print a warning message and ask if the user wants to proceed.
136
Theodore Ts'oc9833a61998-07-05 19:37:53 +0000137E2fsck has a new option -C, which sends completion information to the
138specified file descriptor. For the most part, this is intended for
139programs to use, although -C 0 will print a spinning character to the
140stdout device, which may be useful for users who want to see something
141happening while e2fsck goes about its business.
142
Theodore Ts'o21d53851998-02-21 03:14:50 +0000143Fixed a bug in e2fsck which could cause a core dump when it needs to
144expand the /lost+found directory, and sometimes the bitmaps haven't
145been merged in. Also fixed a related bug where ext2fs_write_dir_block
146was used to write out a non-directory block. (Which would be bad on a
147non-Intel platform with byte swapping going on.)
148
149Fixed bug in e2fsck where it would print a "programming error" message
150instead of correctly identifying where a bad block was in used when
151the bad block was in a non-primary superblock or block group
152descriptor. Also fixed a related bug when sparse superblocks are in
153use and there is a bad block where a superblock or block group
154descriptor would have been in a group that doesn't include a
155superblock.
156
157Fixed a bug in e2fsck (really in libext2fs's dblist function) where if
158the block group descriptor table is corrupt, it was possible to try to
159allocate a huge array, fail, and then abort e2fsck.
160ext2fs_get_num_dirs() now sanity checks the block group descriptor,
161and subsitutes reasonable values if the descriptors are obviously bogus.
162
163If e2fsck finds a device file which has the immutable flag set and the
164i_blocks beyond the normal device number are non-zero, e2fsck will
165offer to remove it, since it's probably caused by garbage in the inode
166table.
167
168When opening a filesystem, e2fsck specially checks for the EROFS error
169code, and prints a specific error message to the user which is more
170user friendly.
171
172If the filesystem revision is too high, change the e2fsck to print
173that this is either because e2fsck is out of date, or because the
174superblock is corrupt.
175
176E2fsck now checks for directories that have duplicate '.' and '..'
177entries, and fixes this corruption.
178
179E2fsck no longer forces a sync of the filesystem (with attendant sleep
180calls) at all times. The ext2fs_flush() function now performs a sync
181only if it needed to write data blocks to disk.
182
183Fixed a minor bug in e2fsck's pass1b's file cloning function, where
184certain errors would not be properly reported.
185
186Updated and expanded a few points in the man pages which users
187complained wheren't explicit enough.
188
189Added special case byte-swapping code if compiling on the PowerPC, to
190accomodate the strange big-endian variant of the ext2 filesystem that
191was previously used on the PowerPC port.
192
193
194Programmer's notes:
195-------------------
196
197Removed C++ keywords from the ext2fs libraries so that it could be
198compiled with C++.
199
200E2fsck's internal organization has now been massively reorganized so
201that pass*.c don't have any printf statements. Instead, all problems
202are reported through the fix_problem() abstraction interface. E2fsck
203has also been revamped so that it can be called as a library from a
204application.
205
206Added new fileio primitives in libext2fs for reading and writing
207files on an unmounted ext2 filesystem. This interface is now used by
208debugfs.
209
210Added a new libext2fs function for mapping logical block numbers of
211a file to a physical block number.
212
213Added a new libext2fs function, ext2fs_alloc_block(), which allocates
214a block, zeros it, and updates the filesystem accounting records
215appropriately.
216
217Added a new libext2fs function, ext2fs_set_bitmap_padding(), which
218sets the padding of the bitmap to be all one's. Used by e2fsck pass 5.
219
220The libext2fs functions now use a set of memory allocation wrapper
221functions: ext2fs_get_mem, ext2fs_free_mem, and ext2fs_resize_mem,
222instead of malloc, free, and resize. This makes it easier for us to
223be ported to strange environments where malloc, et. al. aren't
224necessarily available.
225
226Change the libext2fs fucntion to return ext2-specific error codes
227(EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND, for example) instead of using
228and depending on the existence of system error codes (such as EEXIST
229and ENOENT).
230
231Renamed io.h to ext2_io.h to avoid collision with other OS's header
232files.
233
234Add protection against ext2_io.h and ext2fs.h being included multiple
235times.
236
237The types used for memory lengths, etc. have been made more portable.
238In generla, the code has been made 16-bit safe. Added Mark
239Habersack's contributed DOS disk i/o routines.
240
241Miscellaneous portability fixes, including not depending on char's
242being signed.
243
244The io_channel structure has a new element, app_data, which is
245initialized by the ext2fs routines to contain a copy of the filesystem
246handle.
247
248ext2fs_check_directory()'s callback function may now return the error
249EXT2_ET_CALLBACK_NOTHANDLED if it wishes ext2fs_check_directory() to
250really do the checking, despite the presence of the callback function.
251
252
Theodore Ts'obc210071997-06-17 05:41:36 +0000253E2fsprosg 1.11 (June 17, 1997)
254==============================
255
256Fixed e2fsck to detect (previously ignored) conflicts between the
257superblock or block group descriptors and block bitmaps, inode
258bitmaps, and inode tables.
259
260Fixed bug in e2fsck so that when the message printed out when a block
261or inode bitmap conflicts with other data, it has the correct group
262number.
263
264Fixed bug in e2fsck and mke2fs where the blocksize wasn't being passed
265to badblocks. This meant that not all of the filesystem was being
266tested for bad blocks!
267
268Fixed an array boundary overrun case which cropped up in
269ext2fs_badblocks_list_test when a user tried running "mke2fs -c
270-b 4096".
271
272Adjusted the number of columns printed by mke2fs when displaying the
273superblock backups to avoid running over 80 columns when making a
Theodore Ts'o21d53851998-02-21 03:14:50 +0000274really big filesystem.
Theodore Ts'obc210071997-06-17 05:41:36 +0000275
276Fixed up the man pages for e2fsck, debugfs, badblocks, chattr,
277dumpe2fs, fsck, mke2fs, and tune2fs (typos and other minor grammar
278fixes), thanks to some suggestions from Bill Hawes (whawes@star.net).
279
280Programmer's notes:
281-------------------
282
283Fixed install rule in lib/ss so that ss_err.h is actually getting
284installed.
285
286Fixed bug in ext2fs_copy_bitmap; the destination bitmap wasn't getting
287bassed back to the caller.
288
289Fixed bug in ext2fs_inode_scan_goto_blockgroup; it had not been
290setting the current inode number (which meant this function wasn't
291working at all).
292
293Fixed bug in ext2fs_resize_generic_bitmap; it had not be zeroing all
294blocks in the bitmap when increasing the size of the bitmap.
295
296Changed the initial number of blocks allocated by ext2fs_init_dblist()
297to be more realistic.
298
299Added a new function ext2fs_allocate_group_table, which sets up the
300group descriptor information (and allocates inode and block bitmaps,
301and inode tables for a particular group). The function was created by
302factoring out code form ext2fs_allocate_tables().
303
304Added a new function ext2fs_move_blocks which takes a bitmap of the
305blocks to be moved, and moves them to another location on the
306boardboard.
307
308Make the unix_io channel's io_channel_flush implementation calls sync()
309to to flush the kernel buffers to disk.
310
311Added a new function ext2fs_dblist_count returns the number of
312directory blocks in dblist.
313
314
Theodore Ts'oae851481997-04-29 18:13:24 +0000315E2fsprogs 1.10 (April 24, 1997)
316===============================
317
318Mke2fs once again defaults to creating revision #0 filesystems, since
319people were complaining about breaking compatibility with 1.2 kernels.
320Warning messages were added to the mke2fs and tune2fs man pages that
321the sparse superblock option isn't supported by most kernels yet (1.2
322and 2.0 both don't support parse superblocks.)
323
324Added new flag to mke2fs, -R <raid options>, which allows the user to
325tell mke2fs about the RAID configuration of the filesystem. Currently
326the only supported raid option is "stride" which specifies the width
327of the RAID stripe.
328
329Fixed bug in e2fsck where pass1b would bomb out if there were any
330blocks marked bad in the inode table.
331
332Fixed rare bug in mke2fs where if the user had a very unlucky number
333of blocks in a filesystem (probability less than .002) the resulting
334filesystem would be corrupt in the last block group.
335
336Fixed bug where if e2fsck tried to allocate a block to fix a
337filesystem corruption problem and the filesystem had no free blocks,
338ext2fs_new_block() would loop forever.
339
340The configure script now checks explicitly to see if "-static" works,
341since that can't be assumed to be true --- RedHat doesn't install
342libc-static by default.
343
344Fixed bug in libext2's block iterator functions where under some
345cirmcustances, file with holes would cause the bcount parameter to the
346callback function to be incorrect. This bug didn't affect any of
347e2fsprogs programs, but it was discovered by Paul Mackerras, the
348author of the PPC boot loader.
349
350Removed use of static variables to store the inode cache in libext2fs.
351This caused problems if more than one filesystem was accessed via
352libext2fs (static variables in libraries are generally a bad idea).
353Again, this didn't affect e2fsprogs programs, but it was discovered by
354Paul Mackerras.
355
356Fixed minor bugs and version code drift to assure that e2fsprogs 1.10
357will compile cleanly with 1.2.13 kernels (even with a.out shared
358libraries!)
359
360Programmer's notes:
361-------------------
362
363Added new functions to duplicate an ext2 filesystem handle, and its
364associated substructure. New functions: ext2fs_dup_handle(),
365ext2fs_copy_dblist(), ext2fs_badblocks_copy(), ext2fs_copy_bitmap().
366Other structures, such as the io_channel and the inode_cache, now have
367a ref count so that they only get freed when they are no longer used
368by any filesystem handle. (These functions were added as part of the
369development effort for an ext2 resizer).
370
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +0000371E2fsprogs 1.09 (April 14, 1997)
372===============================
373
374Fixed bug in mke2fs (really in lib/ext2fs/initialize.c) which was
375accidentally introduced in the 1.08 release. The overhead calculation
376was accidentally removed, which caused ext2fs_initialize() to not
377notice when the filesystem size needed to be adjusted down because
378there wasn't enough space in the last block group.
379
380Fixed bug in version parsing library routine; it was always parsing
381the library version string, instead of using the passed-in string.
382
383Clarified chattr man page.
384
Theodore Ts'o24757fa1997-04-29 17:39:27 +0000385E2fsprogs 1.08 (April 10, 1997)
386===============================
387
388E2fsck 1.07 was very slow when checking very large filesystems with a
389lot of files that had hard links (i.e., news spools). This was fixed
390by seriously revamping the icount abstraction. Added a formal test
391suite for the icount abstraction.
392
393Debugfs now has a "-l" option to the "ls" command, which lists the
394inode number, permissions, owner, group, size, and name of the files
395in the directory.
396
397Fix a bug in e2fsck where when a directory had its blocks moved to
398another location during the pass 1b processing, the directory block
399list wasn't updated, so pass 2 wouldn't check (and correct) the
400correct directory block.
401
402E2fsck will now treat inodes which contain blocks which are claimed by
403the filesystem metadata by treating them as multiply claimed blocks.
404This way, the data in those blocks can be copied to a new block during
405the pass 1b--1d processing.
406
407E2fsck will attempt to determine the correct superblock number and
408display it in the diagnostic and warning messages if possible.
409
410Add support for a new (incompatible) feature, "sparse_super". This
411feature reduces the number of blocks which contain copies of backup
412superblocks and block group descriptors. (It is only an incompatible
413feature because of a bug in ext2_free_blocks.) mke2fs and tune2fs now
414support a new -s option; e2fsck will recognize filesystems built with
415this feature turned on.
416
417E2fsck now checks the library to make sure is the correct version,
418using new library functions. (This helps to diagnose incorrectly
419installed e2fsprogs distributions.)
420
421Dumpe2fs now prints more information; its now prints the the
422filesystem revision number, the filesystem sparse_super feature (if
423present), the block ranges for each block group, and the offset from
424the beginning of the block group.
425
426Mke2fs now distributes the inode and block bitmap blok so that the
427won't be concentrated in one or two disks in RAID/striping setups.
428Also, if the user chooses a 2k or 4k block group, mke2fs will try to
429choose the largest blocks per group that be chosen. (For 2k blocks,
430you can have up to 16384 blocks/group; for 4k blocks, you can have up
431to 32768 blocks/group.) Previously mke2fs would not allow
432specification of more than 8192 blocks per group, even if you were
433using a 2k or 4k block group.
434
435Programmer's notes:
436-------------------
437
438Added a new function ext2fs_create_icount2() which takes a "hint"
439argument. This hint argument presets the icount array with the list
440of inodes which actually need to be in the icount array. This really
441helps to speed up e2fsck.
442
443Added a new function ext2fs_icount_validate() which checks the rep
444invariant for the icount structure. This is used mostly for testing.
445
446The error mesasage given when a bad inode number is passed to
447test_generic_bitmap to reflect EXT2FS_TEST_ERROR (instead of
448EXT2FS_UNMARK_ERROR).
449
450Added a new function ext2fs_set_dir_block which sets the block of a
451dblist entry, given the directory inode and blockcnt.
452
453Added a new function ext2fs_get_library_version() which returns the
454current library version, and ext2fs_parse_version_string() which
455returns a version number based on a e2fsprogs version string.
456
457The icount functions will return EINVAL if the passed in inode number
458is out of bounds.
459
Theodore Ts'o21c84b71997-04-29 16:15:03 +0000460E2fsprogs 1.07 (March 9, 1997)
461==============================
462
463E2fsck is now uses much less memory when checking really large
464filesystems (or rather, filesystems with a large number of inodes).
465Previously a filesystem with 1 million inodes required 4 megabytes of
466memory to store inode count statistics; that storage requirement has
467now been reduced to roughly half a megabyte.
468
469E2fsck can now properly deal with bad blocks appearing inside the
470inode table. Instead of trying to relocate the inode table (which
471often failed because there wasn't enough space), the inodes in the bad
472block are marked as in use.
473
474E2fsck will automatically try to use the backup superblocks if the
475primary superblocks have a bad magic number or have missing meta-data
476blocks (or meta-data blocks which are out of range).
477
478E2fsck's pass 3 has been made more efficient; most noticeable on
479filesystems with a very large number of directories.
480
481Completely revamped e2fsck's system of printing problem reports. It
482is now table driven, to make them more easily customizeable and
483extendable. Error messages which can be printed out during preen mode
484are now one line long.
485
486Fixed e2fsck's filesystem swapping code so that it won't try to swap
487fast symbolic links or deleted files.
488
489Fixed e2fsck core dumping when fixing a filesystem which has no
490directories (not even a root directory).
491
492Added a check to e2fsck to make sure that the length of every
493directory entry is a multiple of 4 (since the kernel complains if it
494isn't).
495
496Added a check to e2fsck to make sure that a directory entry isn't a
497link to the root directory, since that isn't allowed.
498
499Added a check to e2fsk to now make sure the '.' and '..' directory
500entries are null terminated, since the 2.0 kernel requires it.
501
502Added check to write_bitmaps() to make sure the superblock doesn't get
503trashed if the inode or block bitmap is marked as being block zero.
504
505Added checking of the new feature set fields in the superblock, to
506avoid dealing with new filesystem features that this package wasn't
507set up to handle.
508
509Fixed a fencepost error in ext2fs_new_block() which would occasionally
510try to allocate a block beyond the end of a filesystem.
511
512When the UUID library picks a random IEEE 802 address (because it
513can't find one from a network card), it sets the multicast bit, to
514avoid conflicting with a legitimate IEEE 802 address.
515
516Mke2fs now sets the root directory's owner to be the real uid of the
517user running mke2fs. If the real uid is non-zero, it also sets
518the group ownership of the root directory to be the real group-id of
519the user running mke2fs.
520
521Mke2fs now has more intelligent error checking when it is given a
522non-existent device.
523
524When badblocks is given the -vv option, it now updates the block that
525it is currently testing on every block.
526
527Fixed a bug in fsck where it wouldn't modify the PATH envirnoment
528currently correctly if PATH wasn't already set.
529
530Shared libraries now built with dependencies. This allows the shared
531library files to be used with dlopen(); it also makes the transition
532to libc 6 easier, since ld.so can tell which libc a particular shared
533library expects to use.
534
535Programmer's notes:
536-------------------
537
538Added new abstraction (defined in dblist.c) for maintaining a list of
539blocks which belongs to directories. This is used in e2fsck and other
540programs which need to iterate over all directories.
541
542Added new functions which test to see if a contiguous range of blocks
543(or inodes) are available. (ext2fs_*_bitmap_range).
544
545Added new function (ext2_inode_has_valid_blocks) which returns true if
546an inode has valid blocks. (moved from e2fsck code).
547
548Added new function (ext2fs_allocate_tables) which allocates the
549meta-data blocks as part of initializing a filesystem. (moved from
550mke2fs code).
551
552Added a new I/O manager for testing purposes. It will either allow a
553program to intercept I/O requests, or print debugging messages to
554trace the activity of a program using the I/O manager.
555
556The badblocks_list functions now store the bad blocks in a sorted
557order, and use a binary search to speed up badblocks_list_test.
558
559The inode scan function ext2fs_get_next_inode() may now return a soft
560error returns: MISSING_INODE_TABLE and BAD_BLOCK_IN_INODE_TABLE in
561those cases where part of an inode table is missing or there is a bad
562block in the inode table.
563
564Added a new function (ext2fs_block_iterate2) which adds new arguments to
565the callback function to return a pointer (block and offset) to the
566reference of the block.
567
568Added new function (ext2fs_inode_scan_goto_blockgroup) which allows an
569application to jump to a particular block group while doing an inode
570scan.
571
572The badblocks list functions were renamed from badblocks_* to
573ext2fs_badblocks_*. Backwards compatibility functions are available
574for now, but programs should be modified to use the new interface.
575
576Some of the library functions were reorganized into separate files to
577reduce the size of some programs which statically link against the
578ext2 library.
579
580Put in some miscellaneous fixes for the Alpha platform.
581
Theodore Ts'o5c576471997-04-29 15:29:49 +0000582
583E2fsprogs 1.06 (October 7, 1996)
584================================
585
586Fixed serious bug in e2fsck: if the block descriptors are bad, don't
587smash the backup copies in ext2fs_close(). (The problem was that when
588e2fsck -p discovered the problem, while it was closing the filesystem
589and exiting, it was also blowing away the backup superblocks on the
590disk, which was less than friendly.) We now make it the case that we
591only write out the backup superblock and the back block descriptors if
592the filesystem is completely free from problems.
593
594Fixed a bug in block_interate in the lib/ext2fs library which caused
595e2fsck to fail on GNU Hurd-created filesystems.
596
597Add support for Linux/FT's bootloader, which actually uses
598EXT2_BOOT_LOADER, and sets its mode bits which caused e2fsck to want
599to clear the inode.
600
601Add support for the "A" (no atime update) attribute. (Note: this
602attribute is not yet in production kernels.)
603
604The test suite is not automatically run when doing a "make all" from
605the top level directory. Users should manually run "make check" if
606they wish to run the test suite.
607
608Upon a preenhalt(), make the printed message more explicit that
609running e2fsck "MANAULLY" means without the -p or -a options.
610
611In e2fsck, if a disconnected inode is zero-length, offer to clear it
612instead of offering to connect it to lost+found.
613
614In e2fsck, if a filesystem was just unmounted uncleanly, and needs
615e2fsck to be run over it, change e2fsck to explicitly display this
616fact.
617
618For dumpe2fs and e2fsck, cause the -V option to print out which
619version of the ext2fs library is actually getting used. (This will
620help detect mismatches of using a 1.06 utility with a 1.05 library,
621etc.)
622
623Programmers' notes:
624-------------------
625
626EXT2_SWAP_BYTES was changed to EXT2_FLAG_SWAP_BYTES, which better fits
627the naming convention.
628
629In ext2fs_initialize(), make sure the description for the inode bitmap
630is correctly initialize.
631
632Fixed minor type typo in ext2fs_allocate_generic_bitmap();
633
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000634E2fsprogs 1.05 (September 7, 1996)
635==================================
636
637Add support for new fields in the ext2 superblock --- volume name,
638volume UUID, and last mounted field. Dumpe2fs displays these fields,
639tune2fs and mke2fs allows you to set them. E2fsck will automatically
640generate a UUID for those volumes that don't have them.
641
642Put in support for e2fsck to recognize HURD specific ext2 features ---
643most notably, the translator block. The e2fsprogs tools will now use
644the creator_os field in the superblock to correctly handle different
645OS-specific variants of the ext2 filesystem.
646
647E2fsck now fixes inodes which have a the deletion time set, but which
648have a non-zero i_link_count field by offering to clear the deletion
649time. Previously e2fsck assumed that the inode was deleted (per 0.3c
650ext2 kernel behavior) and offered to unlink the file.
651
652If e2fsck sets the clean bit, but nothing else, set the exit code
653FSCK_NONDESTRUCT. After all, e2fsck did fix a filesystem error --- it
654set the filesystem valid bit when it was previously cleared. :-) This
655was needed to make the HURD fsck driver happy.
656
657If the user refuses to attach an unattached inode, e2fsck will no
658longer set the inode's link count. Otherwise, the inode would end up
659getting marked as unused, which might cause loss of data later.
660
661Make the message issued by e2fsck when the superblock is corrupt less
662confusing for users. It now mentions that another reason for the
663"corrupt superblock" message might be that the partition might not be
664an ext2 filesystem at all (it might swap, msdos filesystem, ufs, etc.)
665
666Make the libext2 library more robuest so that e2fsck won't coredump on
667an illegal superblock where the blocksize is zero. (f_crashdisk is
668the test case).
669
670By default, create filesystems where the default checkinterval is 6
671months (180 days). Linux servers can be robust enough that 20 reboots
672can be a long, long time.
673
674Added configure flag --enable-old-bitops, which forces the bitops to
675use the old (native) bitmask operations. By default on the sparc
676platform, the standard ext2 bit ordering is now used.
677
678Added a new feature to e2fsck to byte-swap filesystems; this can be
679used to convert old m68k filesystems to use the standard byte-order
680storage for the superblock, inodes, and directory blocks. This
681function is invoked by using the '-s' option to e2fsck.
682
683Debugfs's "dump" command has been enhanced so that it writes out the
684exact size of the file so that the nulls at the end of the file are
685eliminated. The command also accept a new "-p" option which will
686attempt preserve to preserve the ownernship, permissions, and
687file modification/access times.
688
689Debugfs has two new options, -f and -R. The -R option allows the user
690to execute a single debugfs command from the command line. The -f
691option allows the user to specify a "command file" containing debugfs
692commands which will get executed.
693
694Dumpe2fs now pretty prints the check interval, instead of just
695printing the check interval as a number of seconds.
696
697Fix bugs in debugfs: the params command when no filesystem is opened
698no longer causes a core dump. It is now possible to unlink a file
699when a pathame containing a '/' is specified.
700
701Tune2fs has a new -C option which sets the number of times the
702filesystem has been mounted.
703
704Fix the chattr '-v' option so that it actually works. Chattr was
705being buggy about the -v option parsing.
706
707Programmers' notes:
708-------------------
709
710The directory lib/uuid contains a set of library routines to generate
711DCE compatible UUIDs.
712
713Extended ext2fs_namei() to handle symbolic links. Added new function
714ext2fs_nami_follow() which will follow last symbolic link in the case
715where the pathname points to a sym link.
716
717The ext2fs_block_iterate function will now return the HURD translator
718block, if present. The new flag BLOCK_FLAG_DATA_ONLY will cause the
719iterator to return data blocks only. The ext2fs.h file now defines
720constants BLOCK_COUNT_IND, BLOCK_COUNT_DIND, BLOCK_COUNT_TIND, and
721BLOCK_COUNT_TRANSLATOR, which are the magic values passed in the block
722count field of the iterator callback function.
723
724The test script driver now takes an optional second argument, which is
725the test case to be run. This allows you to run a test case without
726needing to run the entire test suite.
727
728On Linux ELF systems, install the .so files in the correct places
729(/usr/lib). The .so files must be stored in the same directory as the
730.a files.
731
732Fixed miscellaneous HURD compilation issues with header file being
733included in the right order.
734
735Fixed debugfs so that it resets optind to zero, not one, since setting
736optind to zero is more correct.
737
738
Theodore Ts'oa4d09611997-04-29 14:28:00 +0000739E2fsprogs 1.04 (May 16, 1996)
740=============================
741
742First "official" (1.03 was a limited release only) to support building
743e2fsprogs under Linux 2.0 kernels (as well as late model 1.3 and 1.99
744kernels).
745
746This package includes a RPM specs file, that it can be built using the
747RedHat Package Manager.
748
749E2fsck now prints a hint that if there are lots of incorrectly located
750inode bitmaps, block bitmaps, and inode table blocks, the user might
751want to try using e2fsck -b 8193 first, to see if that fares any
752better.
753
754For ext2 filesystem written with the hurd, debugfs will now print out
755the translator field when printing an inode structure.
756
757Lots of miscellaneous linking/installation cleanups:
758
759 Libraries are now linked using a relative pathname, instead of
760 relying on -L working correct. It doesn't, in many cases, including
761 current versions of GNU ld. This guarantees that the build tree is
762 linking with the right libraries, instead of the ones installed in
763 /usr/lib.
764
765 Header files, man pages, and the et/ss shell scripts are now
766 generated using a custom substitution script, instead of relying on
767 the configure script. This prevents needless recompilation of
768 files; in addition, the custom substitution script is much faster.
769
770 e2fsck may now be linked dynamically, by using the
771 --enable-dynamic-e2fsck flag to configure. This is not recommended,
772 since it increases e2fsck's dependence on other files, but some
773 people need to save disk space, and other critical programs on their
774 systems were being linked dynamically anyway.
775
776 Programs such as fsck which didn't need to be linked against
777 libext2fs (or mke2fs which didn't need to be linked against libe2p)
778 only link against libraries they actually need. Otherwise, those
779 programs would require the presense of libraries that otherwise
780 could be removed from a rescuse diskette.
781
782 The ss include files are now installed correctly so they can
783 actually be used by another package.
784
785 If the profiling libraries are built, they are now installed on a
786 "make install-libs".
787
788
Theodore Ts'o7f88b041997-04-26 14:48:50 +0000789E2fsprogs 1.03 (March 27, 1996)
790===============================
791
792Change the m68k bit numbering for bitmasks to match the bit numbering
793used by all other ext2 implementations. (This change was requested by
794the m68k kernel development team.)
795
796Support (in-development) filesystem format revision which supports
797(among other things) dynamically sized inodes.
798
799Fixed a bug in the ext2 library so that an intelligent error is
800returned if mke2fs is run with a ridiculously small number of blocks
801for a partition.
802
803Fixed a bug in the ext2 library which required that the device be
804openable in read/write mode in order to determine its size. This
805caused e2fsck -n to require read/write access when it was not
806previously necessary.
807
808Fixed a bug in e2fsck which casued it to occasionally fail the test
809suite depending on which version of the floating point library it was
810using.
811
812Fixed a bug in e2fsck so that it now halts with a fatal error when
813certain superblock consistency checks fail. Previously it continued
814running e2fsck, with some potential confusing/damaging consequences.
815
816Added new flag to fsck which allows the root to be checked in parallel
817with other filesytems. This is not the safest thing in the world to
818do, but some system administrators really wanted it.
819
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000820Fixed -Wall flames in lib/ss.
821
Theodore Ts'o74becf31997-04-26 14:37:06 +0000822
823E2fsprogs 1.02 (January 16, 1996)
824=================================
825
826Fix to allow e2fsprogs to be compiled on recent 1.3 (pl45+) kernels.
827
828Change e2fsck to print statistics of how many non-contiguous files are
829on the system. Note that a file which is larger than 8k blocks, it is
830guaranteed to be non-contiguous.
831
832In mke2fs, print a warning message if a user tries to format a whole
833disk (/dev/hda versus /dev/hda1). If a user really wants to format a
834whole disk, the -F (force) option forces mke2fs to format a whole disk
835as a filesytem.
836
837Fix a bug in fsck where in some cases it might start checking
838partitions in the next pass before it finishes checking partitions in
839the current pass. This still won't cause two partitions on the same
840disk will be checked, so it's rarely a problem in real life.
841
842Patch lsattr so that it won't hang when checking a named pipe.
843
844Minor compilation fixes:
845 * Fix the order of libraries that were linked in debugfs.
846 * Allow the sources to be compiled with -ansi turned on.