mirror of
https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
synced 2024-11-24 18:43:53 +08:00
24757fa046
Checked in e2fsprogs 1.08.
463 lines
19 KiB
Plaintext
463 lines
19 KiB
Plaintext
E2fsprogs 1.08 (April 10, 1997)
|
|
===============================
|
|
|
|
E2fsck 1.07 was very slow when checking very large filesystems with a
|
|
lot of files that had hard links (i.e., news spools). This was fixed
|
|
by seriously revamping the icount abstraction. Added a formal test
|
|
suite for the icount abstraction.
|
|
|
|
Debugfs now has a "-l" option to the "ls" command, which lists the
|
|
inode number, permissions, owner, group, size, and name of the files
|
|
in the directory.
|
|
|
|
Fix a bug in e2fsck where when a directory had its blocks moved to
|
|
another location during the pass 1b processing, the directory block
|
|
list wasn't updated, so pass 2 wouldn't check (and correct) the
|
|
correct directory block.
|
|
|
|
E2fsck will now treat inodes which contain blocks which are claimed by
|
|
the filesystem metadata by treating them as multiply claimed blocks.
|
|
This way, the data in those blocks can be copied to a new block during
|
|
the pass 1b--1d processing.
|
|
|
|
E2fsck will attempt to determine the correct superblock number and
|
|
display it in the diagnostic and warning messages if possible.
|
|
|
|
Add support for a new (incompatible) feature, "sparse_super". This
|
|
feature reduces the number of blocks which contain copies of backup
|
|
superblocks and block group descriptors. (It is only an incompatible
|
|
feature because of a bug in ext2_free_blocks.) mke2fs and tune2fs now
|
|
support a new -s option; e2fsck will recognize filesystems built with
|
|
this feature turned on.
|
|
|
|
E2fsck now checks the library to make sure is the correct version,
|
|
using new library functions. (This helps to diagnose incorrectly
|
|
installed e2fsprogs distributions.)
|
|
|
|
Dumpe2fs now prints more information; its now prints the the
|
|
filesystem revision number, the filesystem sparse_super feature (if
|
|
present), the block ranges for each block group, and the offset from
|
|
the beginning of the block group.
|
|
|
|
Mke2fs now distributes the inode and block bitmap blok so that the
|
|
won't be concentrated in one or two disks in RAID/striping setups.
|
|
Also, if the user chooses a 2k or 4k block group, mke2fs will try to
|
|
choose the largest blocks per group that be chosen. (For 2k blocks,
|
|
you can have up to 16384 blocks/group; for 4k blocks, you can have up
|
|
to 32768 blocks/group.) Previously mke2fs would not allow
|
|
specification of more than 8192 blocks per group, even if you were
|
|
using a 2k or 4k block group.
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
Added a new function ext2fs_create_icount2() which takes a "hint"
|
|
argument. This hint argument presets the icount array with the list
|
|
of inodes which actually need to be in the icount array. This really
|
|
helps to speed up e2fsck.
|
|
|
|
Added a new function ext2fs_icount_validate() which checks the rep
|
|
invariant for the icount structure. This is used mostly for testing.
|
|
|
|
The error mesasage given when a bad inode number is passed to
|
|
test_generic_bitmap to reflect EXT2FS_TEST_ERROR (instead of
|
|
EXT2FS_UNMARK_ERROR).
|
|
|
|
Added a new function ext2fs_set_dir_block which sets the block of a
|
|
dblist entry, given the directory inode and blockcnt.
|
|
|
|
Added a new function ext2fs_get_library_version() which returns the
|
|
current library version, and ext2fs_parse_version_string() which
|
|
returns a version number based on a e2fsprogs version string.
|
|
|
|
The icount functions will return EINVAL if the passed in inode number
|
|
is out of bounds.
|
|
|
|
E2fsprogs 1.07 (March 9, 1997)
|
|
==============================
|
|
|
|
E2fsck is now uses much less memory when checking really large
|
|
filesystems (or rather, filesystems with a large number of inodes).
|
|
Previously a filesystem with 1 million inodes required 4 megabytes of
|
|
memory to store inode count statistics; that storage requirement has
|
|
now been reduced to roughly half a megabyte.
|
|
|
|
E2fsck can now properly deal with bad blocks appearing inside the
|
|
inode table. Instead of trying to relocate the inode table (which
|
|
often failed because there wasn't enough space), the inodes in the bad
|
|
block are marked as in use.
|
|
|
|
E2fsck will automatically try to use the backup superblocks if the
|
|
primary superblocks have a bad magic number or have missing meta-data
|
|
blocks (or meta-data blocks which are out of range).
|
|
|
|
E2fsck's pass 3 has been made more efficient; most noticeable on
|
|
filesystems with a very large number of directories.
|
|
|
|
Completely revamped e2fsck's system of printing problem reports. It
|
|
is now table driven, to make them more easily customizeable and
|
|
extendable. Error messages which can be printed out during preen mode
|
|
are now one line long.
|
|
|
|
Fixed e2fsck's filesystem swapping code so that it won't try to swap
|
|
fast symbolic links or deleted files.
|
|
|
|
Fixed e2fsck core dumping when fixing a filesystem which has no
|
|
directories (not even a root directory).
|
|
|
|
Added a check to e2fsck to make sure that the length of every
|
|
directory entry is a multiple of 4 (since the kernel complains if it
|
|
isn't).
|
|
|
|
Added a check to e2fsck to make sure that a directory entry isn't a
|
|
link to the root directory, since that isn't allowed.
|
|
|
|
Added a check to e2fsk to now make sure the '.' and '..' directory
|
|
entries are null terminated, since the 2.0 kernel requires it.
|
|
|
|
Added check to write_bitmaps() to make sure the superblock doesn't get
|
|
trashed if the inode or block bitmap is marked as being block zero.
|
|
|
|
Added checking of the new feature set fields in the superblock, to
|
|
avoid dealing with new filesystem features that this package wasn't
|
|
set up to handle.
|
|
|
|
Fixed a fencepost error in ext2fs_new_block() which would occasionally
|
|
try to allocate a block beyond the end of a filesystem.
|
|
|
|
When the UUID library picks a random IEEE 802 address (because it
|
|
can't find one from a network card), it sets the multicast bit, to
|
|
avoid conflicting with a legitimate IEEE 802 address.
|
|
|
|
Mke2fs now sets the root directory's owner to be the real uid of the
|
|
user running mke2fs. If the real uid is non-zero, it also sets
|
|
the group ownership of the root directory to be the real group-id of
|
|
the user running mke2fs.
|
|
|
|
Mke2fs now has more intelligent error checking when it is given a
|
|
non-existent device.
|
|
|
|
When badblocks is given the -vv option, it now updates the block that
|
|
it is currently testing on every block.
|
|
|
|
Fixed a bug in fsck where it wouldn't modify the PATH envirnoment
|
|
currently correctly if PATH wasn't already set.
|
|
|
|
Shared libraries now built with dependencies. This allows the shared
|
|
library files to be used with dlopen(); it also makes the transition
|
|
to libc 6 easier, since ld.so can tell which libc a particular shared
|
|
library expects to use.
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
Added new abstraction (defined in dblist.c) for maintaining a list of
|
|
blocks which belongs to directories. This is used in e2fsck and other
|
|
programs which need to iterate over all directories.
|
|
|
|
Added new functions which test to see if a contiguous range of blocks
|
|
(or inodes) are available. (ext2fs_*_bitmap_range).
|
|
|
|
Added new function (ext2_inode_has_valid_blocks) which returns true if
|
|
an inode has valid blocks. (moved from e2fsck code).
|
|
|
|
Added new function (ext2fs_allocate_tables) which allocates the
|
|
meta-data blocks as part of initializing a filesystem. (moved from
|
|
mke2fs code).
|
|
|
|
Added a new I/O manager for testing purposes. It will either allow a
|
|
program to intercept I/O requests, or print debugging messages to
|
|
trace the activity of a program using the I/O manager.
|
|
|
|
The badblocks_list functions now store the bad blocks in a sorted
|
|
order, and use a binary search to speed up badblocks_list_test.
|
|
|
|
The inode scan function ext2fs_get_next_inode() may now return a soft
|
|
error returns: MISSING_INODE_TABLE and BAD_BLOCK_IN_INODE_TABLE in
|
|
those cases where part of an inode table is missing or there is a bad
|
|
block in the inode table.
|
|
|
|
Added a new function (ext2fs_block_iterate2) which adds new arguments to
|
|
the callback function to return a pointer (block and offset) to the
|
|
reference of the block.
|
|
|
|
Added new function (ext2fs_inode_scan_goto_blockgroup) which allows an
|
|
application to jump to a particular block group while doing an inode
|
|
scan.
|
|
|
|
The badblocks list functions were renamed from badblocks_* to
|
|
ext2fs_badblocks_*. Backwards compatibility functions are available
|
|
for now, but programs should be modified to use the new interface.
|
|
|
|
Some of the library functions were reorganized into separate files to
|
|
reduce the size of some programs which statically link against the
|
|
ext2 library.
|
|
|
|
Put in some miscellaneous fixes for the Alpha platform.
|
|
|
|
|
|
E2fsprogs 1.06 (October 7, 1996)
|
|
================================
|
|
|
|
Fixed serious bug in e2fsck: if the block descriptors are bad, don't
|
|
smash the backup copies in ext2fs_close(). (The problem was that when
|
|
e2fsck -p discovered the problem, while it was closing the filesystem
|
|
and exiting, it was also blowing away the backup superblocks on the
|
|
disk, which was less than friendly.) We now make it the case that we
|
|
only write out the backup superblock and the back block descriptors if
|
|
the filesystem is completely free from problems.
|
|
|
|
Fixed a bug in block_interate in the lib/ext2fs library which caused
|
|
e2fsck to fail on GNU Hurd-created filesystems.
|
|
|
|
Add support for Linux/FT's bootloader, which actually uses
|
|
EXT2_BOOT_LOADER, and sets its mode bits which caused e2fsck to want
|
|
to clear the inode.
|
|
|
|
Add support for the "A" (no atime update) attribute. (Note: this
|
|
attribute is not yet in production kernels.)
|
|
|
|
The test suite is not automatically run when doing a "make all" from
|
|
the top level directory. Users should manually run "make check" if
|
|
they wish to run the test suite.
|
|
|
|
Upon a preenhalt(), make the printed message more explicit that
|
|
running e2fsck "MANAULLY" means without the -p or -a options.
|
|
|
|
In e2fsck, if a disconnected inode is zero-length, offer to clear it
|
|
instead of offering to connect it to lost+found.
|
|
|
|
In e2fsck, if a filesystem was just unmounted uncleanly, and needs
|
|
e2fsck to be run over it, change e2fsck to explicitly display this
|
|
fact.
|
|
|
|
For dumpe2fs and e2fsck, cause the -V option to print out which
|
|
version of the ext2fs library is actually getting used. (This will
|
|
help detect mismatches of using a 1.06 utility with a 1.05 library,
|
|
etc.)
|
|
|
|
Programmers' notes:
|
|
-------------------
|
|
|
|
EXT2_SWAP_BYTES was changed to EXT2_FLAG_SWAP_BYTES, which better fits
|
|
the naming convention.
|
|
|
|
In ext2fs_initialize(), make sure the description for the inode bitmap
|
|
is correctly initialize.
|
|
|
|
Fixed minor type typo in ext2fs_allocate_generic_bitmap();
|
|
|
|
E2fsprogs 1.05 (September 7, 1996)
|
|
==================================
|
|
|
|
Add support for new fields in the ext2 superblock --- volume name,
|
|
volume UUID, and last mounted field. Dumpe2fs displays these fields,
|
|
tune2fs and mke2fs allows you to set them. E2fsck will automatically
|
|
generate a UUID for those volumes that don't have them.
|
|
|
|
Put in support for e2fsck to recognize HURD specific ext2 features ---
|
|
most notably, the translator block. The e2fsprogs tools will now use
|
|
the creator_os field in the superblock to correctly handle different
|
|
OS-specific variants of the ext2 filesystem.
|
|
|
|
E2fsck now fixes inodes which have a the deletion time set, but which
|
|
have a non-zero i_link_count field by offering to clear the deletion
|
|
time. Previously e2fsck assumed that the inode was deleted (per 0.3c
|
|
ext2 kernel behavior) and offered to unlink the file.
|
|
|
|
If e2fsck sets the clean bit, but nothing else, set the exit code
|
|
FSCK_NONDESTRUCT. After all, e2fsck did fix a filesystem error --- it
|
|
set the filesystem valid bit when it was previously cleared. :-) This
|
|
was needed to make the HURD fsck driver happy.
|
|
|
|
If the user refuses to attach an unattached inode, e2fsck will no
|
|
longer set the inode's link count. Otherwise, the inode would end up
|
|
getting marked as unused, which might cause loss of data later.
|
|
|
|
Make the message issued by e2fsck when the superblock is corrupt less
|
|
confusing for users. It now mentions that another reason for the
|
|
"corrupt superblock" message might be that the partition might not be
|
|
an ext2 filesystem at all (it might swap, msdos filesystem, ufs, etc.)
|
|
|
|
Make the libext2 library more robuest so that e2fsck won't coredump on
|
|
an illegal superblock where the blocksize is zero. (f_crashdisk is
|
|
the test case).
|
|
|
|
By default, create filesystems where the default checkinterval is 6
|
|
months (180 days). Linux servers can be robust enough that 20 reboots
|
|
can be a long, long time.
|
|
|
|
Added configure flag --enable-old-bitops, which forces the bitops to
|
|
use the old (native) bitmask operations. By default on the sparc
|
|
platform, the standard ext2 bit ordering is now used.
|
|
|
|
Added a new feature to e2fsck to byte-swap filesystems; this can be
|
|
used to convert old m68k filesystems to use the standard byte-order
|
|
storage for the superblock, inodes, and directory blocks. This
|
|
function is invoked by using the '-s' option to e2fsck.
|
|
|
|
Debugfs's "dump" command has been enhanced so that it writes out the
|
|
exact size of the file so that the nulls at the end of the file are
|
|
eliminated. The command also accept a new "-p" option which will
|
|
attempt preserve to preserve the ownernship, permissions, and
|
|
file modification/access times.
|
|
|
|
Debugfs has two new options, -f and -R. The -R option allows the user
|
|
to execute a single debugfs command from the command line. The -f
|
|
option allows the user to specify a "command file" containing debugfs
|
|
commands which will get executed.
|
|
|
|
Dumpe2fs now pretty prints the check interval, instead of just
|
|
printing the check interval as a number of seconds.
|
|
|
|
Fix bugs in debugfs: the params command when no filesystem is opened
|
|
no longer causes a core dump. It is now possible to unlink a file
|
|
when a pathame containing a '/' is specified.
|
|
|
|
Tune2fs has a new -C option which sets the number of times the
|
|
filesystem has been mounted.
|
|
|
|
Fix the chattr '-v' option so that it actually works. Chattr was
|
|
being buggy about the -v option parsing.
|
|
|
|
Programmers' notes:
|
|
-------------------
|
|
|
|
The directory lib/uuid contains a set of library routines to generate
|
|
DCE compatible UUIDs.
|
|
|
|
Extended ext2fs_namei() to handle symbolic links. Added new function
|
|
ext2fs_nami_follow() which will follow last symbolic link in the case
|
|
where the pathname points to a sym link.
|
|
|
|
The ext2fs_block_iterate function will now return the HURD translator
|
|
block, if present. The new flag BLOCK_FLAG_DATA_ONLY will cause the
|
|
iterator to return data blocks only. The ext2fs.h file now defines
|
|
constants BLOCK_COUNT_IND, BLOCK_COUNT_DIND, BLOCK_COUNT_TIND, and
|
|
BLOCK_COUNT_TRANSLATOR, which are the magic values passed in the block
|
|
count field of the iterator callback function.
|
|
|
|
The test script driver now takes an optional second argument, which is
|
|
the test case to be run. This allows you to run a test case without
|
|
needing to run the entire test suite.
|
|
|
|
On Linux ELF systems, install the .so files in the correct places
|
|
(/usr/lib). The .so files must be stored in the same directory as the
|
|
.a files.
|
|
|
|
Fixed miscellaneous HURD compilation issues with header file being
|
|
included in the right order.
|
|
|
|
Fixed debugfs so that it resets optind to zero, not one, since setting
|
|
optind to zero is more correct.
|
|
|
|
|
|
E2fsprogs 1.04 (May 16, 1996)
|
|
=============================
|
|
|
|
First "official" (1.03 was a limited release only) to support building
|
|
e2fsprogs under Linux 2.0 kernels (as well as late model 1.3 and 1.99
|
|
kernels).
|
|
|
|
This package includes a RPM specs file, that it can be built using the
|
|
RedHat Package Manager.
|
|
|
|
E2fsck now prints a hint that if there are lots of incorrectly located
|
|
inode bitmaps, block bitmaps, and inode table blocks, the user might
|
|
want to try using e2fsck -b 8193 first, to see if that fares any
|
|
better.
|
|
|
|
For ext2 filesystem written with the hurd, debugfs will now print out
|
|
the translator field when printing an inode structure.
|
|
|
|
Lots of miscellaneous linking/installation cleanups:
|
|
|
|
Libraries are now linked using a relative pathname, instead of
|
|
relying on -L working correct. It doesn't, in many cases, including
|
|
current versions of GNU ld. This guarantees that the build tree is
|
|
linking with the right libraries, instead of the ones installed in
|
|
/usr/lib.
|
|
|
|
Header files, man pages, and the et/ss shell scripts are now
|
|
generated using a custom substitution script, instead of relying on
|
|
the configure script. This prevents needless recompilation of
|
|
files; in addition, the custom substitution script is much faster.
|
|
|
|
e2fsck may now be linked dynamically, by using the
|
|
--enable-dynamic-e2fsck flag to configure. This is not recommended,
|
|
since it increases e2fsck's dependence on other files, but some
|
|
people need to save disk space, and other critical programs on their
|
|
systems were being linked dynamically anyway.
|
|
|
|
Programs such as fsck which didn't need to be linked against
|
|
libext2fs (or mke2fs which didn't need to be linked against libe2p)
|
|
only link against libraries they actually need. Otherwise, those
|
|
programs would require the presense of libraries that otherwise
|
|
could be removed from a rescuse diskette.
|
|
|
|
The ss include files are now installed correctly so they can
|
|
actually be used by another package.
|
|
|
|
If the profiling libraries are built, they are now installed on a
|
|
"make install-libs".
|
|
|
|
|
|
E2fsprogs 1.03 (March 27, 1996)
|
|
===============================
|
|
|
|
Change the m68k bit numbering for bitmasks to match the bit numbering
|
|
used by all other ext2 implementations. (This change was requested by
|
|
the m68k kernel development team.)
|
|
|
|
Support (in-development) filesystem format revision which supports
|
|
(among other things) dynamically sized inodes.
|
|
|
|
Fixed a bug in the ext2 library so that an intelligent error is
|
|
returned if mke2fs is run with a ridiculously small number of blocks
|
|
for a partition.
|
|
|
|
Fixed a bug in the ext2 library which required that the device be
|
|
openable in read/write mode in order to determine its size. This
|
|
caused e2fsck -n to require read/write access when it was not
|
|
previously necessary.
|
|
|
|
Fixed a bug in e2fsck which casued it to occasionally fail the test
|
|
suite depending on which version of the floating point library it was
|
|
using.
|
|
|
|
Fixed a bug in e2fsck so that it now halts with a fatal error when
|
|
certain superblock consistency checks fail. Previously it continued
|
|
running e2fsck, with some potential confusing/damaging consequences.
|
|
|
|
Added new flag to fsck which allows the root to be checked in parallel
|
|
with other filesytems. This is not the safest thing in the world to
|
|
do, but some system administrators really wanted it.
|
|
|
|
Fixed -Wall flames in lib/ss.
|
|
|
|
|
|
E2fsprogs 1.02 (January 16, 1996)
|
|
=================================
|
|
|
|
Fix to allow e2fsprogs to be compiled on recent 1.3 (pl45+) kernels.
|
|
|
|
Change e2fsck to print statistics of how many non-contiguous files are
|
|
on the system. Note that a file which is larger than 8k blocks, it is
|
|
guaranteed to be non-contiguous.
|
|
|
|
In mke2fs, print a warning message if a user tries to format a whole
|
|
disk (/dev/hda versus /dev/hda1). If a user really wants to format a
|
|
whole disk, the -F (force) option forces mke2fs to format a whole disk
|
|
as a filesytem.
|
|
|
|
Fix a bug in fsck where in some cases it might start checking
|
|
partitions in the next pass before it finishes checking partitions in
|
|
the current pass. This still won't cause two partitions on the same
|
|
disk will be checked, so it's rarely a problem in real life.
|
|
|
|
Patch lsattr so that it won't hang when checking a named pipe.
|
|
|
|
Minor compilation fixes:
|
|
* Fix the order of libraries that were linked in debugfs.
|
|
* Allow the sources to be compiled with -ansi turned on.
|