mirror of
https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
synced 2024-12-27 19:00:29 +08:00
767de097c4
Interim checkin for 1.21-WIP release.
1556 lines
62 KiB
Plaintext
1556 lines
62 KiB
Plaintext
E2fsprogs 1.21-WIP (June 1, 2001)
|
|
=================================
|
|
|
|
Fixed two bugs in e2fsck's handling of dup block handling, dealing
|
|
with relatively uncommon edge cases: a directory with an indirect
|
|
block which is claimed by another file, and when the last inode in the
|
|
filesystem has blocks claimed by another file.
|
|
|
|
Fix e2fsck's handling of incompatible journal flags so that the user
|
|
has chance to abort, and then has the option to clear out the journal
|
|
entirely.
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
Fix general gcc -Wall complaints.
|
|
|
|
The types needed by the ext2 header files are now provided by
|
|
lib/ext2fs/ext2_types.h, instead of include/asm/types.h.
|
|
|
|
Fixed make depend script so that it automatically corrects the
|
|
pathname cleanups performed by make -M, so I don't have to fix them up
|
|
by hand.
|
|
|
|
Fixed the d_loaddump test case to be more robust, and not depend on
|
|
bash'isms.
|
|
|
|
Removed debugfs's dependence on pread(), which was accidentally
|
|
intrudced in e2fsprogs 1.20
|
|
|
|
|
|
E2fsprogs 1.20 (May 20, 2001)
|
|
=============================
|
|
|
|
Add support for replaying the ext3 journal purely in user mode,
|
|
including handling the orphaned inode list. Used code contributed by
|
|
Andreas Dilger, with bug fixes and the orphaned inode handling done
|
|
by Theodore Ts'o.
|
|
|
|
The mke2fs and tune2fs programs can create or modify a filesystem to
|
|
include an ext3 journal. Tune2fs also can be used to remove an ext3
|
|
journal from a filesystem.
|
|
|
|
E2fsck will now check for the existence of a linked list of orphan
|
|
inodes in the superblock, and clear those inodes before starting the
|
|
rest of the filesystem check (but after the journal playback).
|
|
|
|
E2fsck now validates the file descriptor passed to the -C option,
|
|
which saves against the completion bar getting written to an
|
|
unexpected location, such as the disk being checked. (Debian
|
|
bug/wishlist #55220)
|
|
|
|
E2fsck will now bump the filesystem revision number from zero to one
|
|
if any of the compatibility bits are set.
|
|
|
|
Fixed a bug where a badly corrupted directory on a big endian system
|
|
could cause e2fsck to die with a bus error. The
|
|
ext2fs_read_dir_block() and ext2fs_process_dir_block() functions in
|
|
the ext2 library now does alignment sanity checks on the rec_len field
|
|
of the directory entry before using it.
|
|
|
|
The ext2 library has been enhanced to make tune2fs safe to run on
|
|
mounted filesystems. (Users could usually get away with using tune2fs
|
|
on mounted filesystems before, but with the advent of ext3 and
|
|
journaling, it became important to make tune2fs was *really* safe for
|
|
use even when the filesystem being modified is mounted.) E2label is
|
|
now implemented by tune2fs using an argv[0] dispatch, so that e2label
|
|
is also now safe for use on mounted filesystems.
|
|
|
|
Added a new program, e2image, which creates a backup of critical ext2
|
|
filesystem data structures. The generated image file can be examined
|
|
using dumpe2fs and debugfs. In the future, e2fsck will be able to use
|
|
the image file to help recover very badly damaged filesystems.
|
|
|
|
Fixed a number of LFS bugs in e2fsck; very, very large (> 2**42) files
|
|
no longer cause e2fsck to bomb out. Also treat files > 2GB as being
|
|
large file when deciding whether or not the filesystem has large files.
|
|
|
|
Fixed lsattr and chattr so that they work correctly on large files.
|
|
(Fixes Debian bug #72690.)
|
|
|
|
Removed limitation in get_device_size() which imposed a one terrabyte
|
|
filesystem limitation. (Most 2.2 kernels still have a signed int
|
|
problem which cause 1 TB block device limitation. Fortunately, the
|
|
kernel patches to fix this are much easier than fixing the 2TB
|
|
limitation in the kernel. :-)
|
|
|
|
A max_mount_count of zero is now treated as if no mount count were
|
|
set. (Previously, no mount count was indicated by using -1, and a
|
|
mount count of zero caused e2fsck to always be run.)
|
|
|
|
Mke2fs supports two new filesystem types largefile and largefile4.
|
|
|
|
Mke2fs now adds some randomness in s_max_mount_count so that multiple
|
|
filesystems won't be all checked at the same time under normal
|
|
operations.
|
|
|
|
Fixed bug in the progress bar printing code which could cause e2fsck
|
|
to core dump on an illegal filesystem.
|
|
|
|
Fixed bug in fsck which could allow more than one instance of e2fsck
|
|
to be printing a progress bar. (Debian bug #65267)
|
|
|
|
Fsck using a UUID or a LABEL specifier will work even if devfs is
|
|
compiled into the kernel and not mounted. If the pathnames in
|
|
/proc/partitions are incorrect, fsck will search /dev for the correct
|
|
device (using the new ext2fs_find_block_device library function).
|
|
Fsck now also checks the RAID devices first so that they are properly
|
|
found when they are in use. Support has also been added to support
|
|
additional IDE disks and the DAC 960 device names. (Debian bug #94159)
|
|
|
|
Fixed a bug in fsck which caused it not deal properly with 16
|
|
byte long filesystem labels.
|
|
|
|
Fsck's -t option has been made a lot more flexible. The semantics for
|
|
what happens if a comma-separated list to fsck has been regularized,
|
|
and it is now possible to filter what filesystems will get checked
|
|
based what is in the filesystem's fstab entry's option field. (Debian
|
|
bug #89483.)
|
|
|
|
The dumpe2fs program can now print out the group description
|
|
information in hex, and also prints the location of the superblock and
|
|
block group descriptor for those block groups that have them.
|
|
|
|
Mke2fs now clears the ext2 superblock before it starts creating a
|
|
filesystem, so that the superblock magic number is only written if the
|
|
filesystem creation process successfully completes.
|
|
|
|
The debugfs program's stat command now pretty-prints the blocks used
|
|
by an inode so that it's more compact and informative.
|
|
|
|
The debugfs stats command now uses the same libe2p code (which is used
|
|
by dumpe2fs) to print the superblock header information. This is more
|
|
complete, and it avoids a bit of code duplication.
|
|
|
|
Added a new debugfs command, set_super_value (ssv) which allows the
|
|
user to set arbitrary superblock fields.
|
|
|
|
Debugfs was extended to support inode numbers in hex (by prefixing
|
|
them with 0x), and so that modify_inode can set the inode generation
|
|
number. Also, there is now a new function command called logdump
|
|
which will dump an ext3 journal.
|
|
|
|
Fixed a bug in debugfs so that quitting out of the pager doesn't kill
|
|
debugfs.
|
|
|
|
Debugfs's dump command now stops immediately upon reporting a disk
|
|
read error. (Fixed a bug in ext2fs_file_read library routine which
|
|
caused debugfs not to stop.) (Debian bug #79163)
|
|
|
|
On systems with /proc/mounts (mainly Linux systems), /proc/mounts is
|
|
checked before /etc/mtab is used, since /proc/mounts is more likely to
|
|
be accurate.
|
|
|
|
Added portability fixes for Solaris and Linux/ia64.
|
|
|
|
Various manual pages were clarified and cleaned up. (Fixed debian
|
|
bugs #63442, #67446, and #87216)
|
|
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
The e2fsck message printer now supports %Iu and %Ig, which will print
|
|
out the inode's user and group owners, respectively.
|
|
|
|
E2fsprogs now includes its own version of include/linux/ext2_fs.h, so
|
|
that no longer dependent on the system having the correct version of
|
|
the kernel header files.
|
|
|
|
Added a new function to libext2, ext2fs_find_block_device(), which
|
|
searches the system (i.e., /dev, /devfs, /devices) for a pathname to a
|
|
device given its device number.
|
|
|
|
Added a new function to libext2, ext2fs_sync_device, which centralizes
|
|
all of the places which might try to use the BLKFLSBUF or FDFLUSH
|
|
ioctls (and usually failing to define them since the system header
|
|
files don't usually do this for us, and we're trying to avoid usage of
|
|
kernel include files now).
|
|
|
|
Added new utility programs in tests/progs: random_exercise and
|
|
hold_inode. They aren't built by default; they're useful for
|
|
exercising ext3 filesystem code.
|
|
|
|
Added a new ext2 filesystem flag, EXT2_FLAG_SUPER_ONLY, which causes
|
|
the filesystem close functions to only update the superblock, and to
|
|
not touch the block group descriptors. Needed by tune2fs when
|
|
modifying a mounted filesystem.
|
|
|
|
Got rid of struct ext2fs_sb and replaced it with the standard struct
|
|
ext2_super_block from include/linux/ext2_fs.h. Note: this may break
|
|
source (but not binary) compatibility of some users of the ext2
|
|
library. Those applications should just simply do a global search and
|
|
replace of struct ext2fs_sb with struct ext2_super_block, and use
|
|
their own private copy of ext2_fs.h if they aren't already.
|
|
|
|
The ino_t type has been renamed ext2_ino_t to protect applications
|
|
that attempt to compile -D_FILE_OFFSET_BITS=64, since this
|
|
inexplicably changes ino_t(!?). So we use ext2_ino_t to avoid an
|
|
unexpected ABI change.
|
|
|
|
The Makefiles have been reworked so that "make check" can be run from
|
|
the top-level Makefile.
|
|
|
|
Fix general gcc -Wall complaints and removed dead code.
|
|
|
|
Remove use of NOARGS, because we assume everyone does ANSI C these
|
|
days.
|
|
|
|
Added build-rpm script from sct.
|
|
|
|
New functions ext2fs_image_{inode,super,bitmap}_{read,write} added
|
|
to support e2image.
|
|
|
|
New function ext2fs_flush_icache which must be called if the
|
|
application program modifies the inode table blocks without going
|
|
through ext2fs_write_inode() interface.
|
|
|
|
New ext2fs_check_mount_point() function, which will return the mount
|
|
point of a device if mounted.
|
|
|
|
The io_channel abstraction now has an optional interface,
|
|
io_channel_write_range, which allows specific byte ranges to be
|
|
written.
|
|
|
|
The unix_io IO channel now supports write-through caching, so that
|
|
journal creation is more efficient.
|
|
|
|
Added x86 assembly language routines to support byte swapping, to
|
|
reduce executable size.
|
|
|
|
Fixed bug in the utility program subst so that it's possible to
|
|
replace a substitution variable with a zero-length string.
|
|
|
|
Fixed numbering e2fsck pass1 problem numbers; an extra zero had
|
|
slipped into some of the problem number.
|
|
|
|
E2fsprogs 1.19 (July 13, 2000)
|
|
==============================
|
|
|
|
Release the resize2fs program since the timeout before it could
|
|
be released under the GPL has finally expired.
|
|
|
|
Add experimental support needed for the ext2 compression patches.
|
|
This requires compiling e2fsprogs with the --enable-compression flag
|
|
to the configure script.
|
|
|
|
Added ext3 journalling support. E2fsck will run the journal (if
|
|
necessary) by temporarily mounting the filesystem. /sbin/fsck.ext3 is
|
|
installed as a symlink to e2fsck. Fsck has been taught about ext3,
|
|
and treats it the same as ext2 in terms of the progress bar logic.
|
|
Dumpe2fs will display the superblock journaling information if the
|
|
filesystem has a journal. The ext2 library will now permit opening an
|
|
ext3 filesystem with the recovery flag set. This is necessary for
|
|
on-line dump's to work correctly, but there may be issues with this
|
|
working well since ext3 is much less agressive about syncing blocks to
|
|
the filesystem, since they're safe on the journal.
|
|
|
|
Tune2fs and e2fsck have been changed to allow the mount_count check to
|
|
be disabled by setting max_mount_count to -1. (This was already
|
|
supported by the kernel.)
|
|
|
|
Create a symbolic link for fsck.ext3, since the e2fsprogs utilities
|
|
are used for ext3 as well.
|
|
|
|
Added internationalization support for e2fsprogs; must be enabled
|
|
by passing --enable-nls to configure.
|
|
|
|
Always use the provided ext2fs header files to insulate ourselves from
|
|
kernel version changes. Which include files are used by e2fsprogs
|
|
have also been cleaned up to improve portability.
|
|
|
|
Limit the number of times that e2fsck updates the progress bar so that
|
|
people who are booting using a 9600 baud console don't get swampped by
|
|
too many updates.
|
|
|
|
Improved the loop detection algorithm in e2sck's pass #3 so that it is
|
|
much, much faster for large filesystems with a large number of
|
|
directories.
|
|
|
|
The memory footprint for e2fsck is now slightly smaller than before.
|
|
|
|
E2fsck now checks if special devices have a non-zero size, and offers
|
|
to clear the size field if it finds such an inode.
|
|
|
|
E2fsck now checks if special devices have the append-only flag set,
|
|
and offers to clear the inode.
|
|
|
|
E2fsck now properly handles some "should never fail" cases during a
|
|
bitmap copy in pass5.
|
|
|
|
E2fsck now properly prints control characters in filenames as ^A .. ^Z.
|
|
|
|
E2fsck now calculates the correct location of the backup superblock in
|
|
the case of filesystem blocksizes > 1k.
|
|
|
|
Fixed a bug in e2fsck's calculation of the number of inodes_per_block
|
|
which normally didn't cause problems under most filesystem parameters,
|
|
but could cause a valid superblock to be rejected in extreme cases.
|
|
Other checks for validating superblock values were made more
|
|
stringent.
|
|
|
|
Added non-destructive write testing to the badblocks program, courtesy
|
|
of David Beattie. The badblocks also now has an option to input the
|
|
current set of bad blocks, so that known bad blocks are skipped to
|
|
speed up the badblocks test. There is also a persistent rescan
|
|
feature which causes badblocks to run until it has completed some
|
|
number of passes without discovering any new bad blocks.
|
|
|
|
Badblocks now checks to see if the device is mounted and refuses to do
|
|
the tests involving writing to the device if it is mounted. Also,
|
|
badblocks now allows the number of blocks to be checked to be
|
|
defaulted to the size of the partition.
|
|
|
|
Fixed a bug in fsck which didn't allow non-root users to be able to
|
|
check filesystems if there were any LABEL= or UUID= entries in
|
|
/etc/fstab.
|
|
|
|
The Hurd doesn't support the filetype filesystem feature. The mke2fs
|
|
program now makes sure that for the Hurd, the filestype feature is
|
|
turned off. E2fsck will check to see if the filetype feature is
|
|
turned on for Hurd filesystems, and offer to turn off the feature.
|
|
|
|
Mke2fs now has a safety check to make sure the number of blocks do not
|
|
exceed 32 bits even on a 64 bit platform.
|
|
|
|
Really fixed a bug in fsck to allow "fsck -As" to run interactive
|
|
fsck's. (For those people who like to do interactive fsck's in the
|
|
/etc/rc scripts!?!)
|
|
|
|
Debugfs has a few new features: the rdump command, which will do a
|
|
recursive dump of a directory and all of its contents, and the lcd
|
|
command which does a local chdir (much like the ftp command of the
|
|
same name). In addition, the debugfs program and the open_filesystem
|
|
command now takes three new options: -b and -s, which allows the
|
|
blocksize and superblock location to be specified, and the -c option
|
|
which is used in catastrophic situations where the block group
|
|
descriptors are corrupt. If the -c option is specified, debugfs will
|
|
skip trying to read in the block and inode bitmaps.
|
|
|
|
Debufs's lsdel command was fixed to handle bad blocks in the inode
|
|
table.
|
|
|
|
A Y2K bug in debugfs's "ls -l" handling was fixed by switching to use
|
|
4 digit years.
|
|
|
|
General improvements in error messages
|
|
|
|
- Mke2fs prints a sane error message if the partition size is zero
|
|
(usually because the partition table wasn't reread by the
|
|
kernel due to the partition being busy), instead of "invalid
|
|
argument passed to ext2 library while initializing superblock".
|
|
|
|
- Fsck now prints more self-explanatory message if an invalid UUID=
|
|
or LABEL= specification is passed to it.
|
|
|
|
UUID library changed to use the LGPL.
|
|
|
|
Fixed a bug in the UUID library where very rapid calls to the
|
|
time-based UUID generator could cause duplicate UUID's to be returned.
|
|
This was not a problem for e2fsprogs, but it could be a problem for
|
|
other users of the library.
|
|
|
|
Make the UUID library more robust in the face of missing or an
|
|
improper /dev/urandom or /dev/random files.
|
|
|
|
Added some random portability fixes for Solaris.
|
|
|
|
Some minor man page updates.
|
|
|
|
Fixed a memory leak in the ss library.
|
|
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
We now try to use lseek64 and open64 from the LFS if possible.
|
|
|
|
The 3rd parameter in e2p's print_flags is now a flags word, instead of
|
|
a boolean option.
|
|
|
|
The mark and unmark bitmap functions now return the previous state of
|
|
the bit that was being changed, which is useful for some speed
|
|
optimizations.
|
|
|
|
The following functions have been added to enhance the badblocks list
|
|
handling in libext2fs: ext2fs_write_bb_FILE, ext2fs_read_bb_FILE2, and
|
|
ext2fs_badblocks_equal.
|
|
|
|
The ext2 header files now have the latest journalling fields to the
|
|
superblock.
|
|
|
|
The ext2fs_mkdir function in libext2fs now properly backs out of error
|
|
conditions robustly.
|
|
|
|
Cleaned up makefiles:
|
|
- to cleanly compile with the -j flag.
|
|
- so distclean removes all generated files.
|
|
- so in case of an error while installing header files, the make aborts.
|
|
|
|
Fix test_script so that it works correctly when compiling in the
|
|
source directory.
|
|
|
|
The random UUID generation routine has been made slightly better in
|
|
the case where /dev/random doesn't exist. (Use of randomly-based UUID
|
|
is still not recommended if /dev/random doesn't exist, however; it's
|
|
better to use the time/ethernet MAC address UUID in this case.)
|
|
|
|
Clean up the build process so it's more friendly in case of missing
|
|
directories.
|
|
|
|
The ext2fs header file can now be #include'd into C++ programs.
|
|
|
|
The e2p.h header file is now installed.
|
|
|
|
Added workaround to a gawk 3.0.5 bug in lib/ss/mk_cmds.
|
|
|
|
|
|
|
|
E2fsprogs 1.18 (November 10, 1999)
|
|
==================================
|
|
|
|
Fix a core dumping bug in e2fsck if an imagic inode is present or
|
|
(more rarely) if the filesystem is badly corrupted enough that e2fsck
|
|
has to restart pass 1 processing. E2fsck now closes the filesystem
|
|
before freeing a large number of its data structures, so in the case
|
|
of future memory faults, at least the fixed filesystem will be fully
|
|
written out.
|
|
|
|
If a filesystem doesn't support imagic inodes, and e2fsck discovers an
|
|
imagic inode, it will offer to clear the imagic flag.
|
|
|
|
E2fsck will now offer to clear the immutable flag on special files
|
|
(device/socket/fifos) when running it in non-preen mode.
|
|
|
|
E2fsck will now set the filetype when creating /lost+found, and when
|
|
connected orphaned inodes to /lost+found.
|
|
|
|
Debugfs's ncheck and icheck commands now handles the case where there
|
|
are bad blocks in the inode table without bombing out.
|
|
|
|
The badblocks list processing code has been made more efficiently for
|
|
appending a large number of (ordered) badblocks to the badblocks list.
|
|
|
|
Some minor man page updates.
|
|
|
|
Fsck now allows interactive e2fsck's when using fsck -As (not a common
|
|
mode, but some people like to do this in boot scripts for silly reasons).
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
The internal e2fsck problem code for PR_2_SPLIT_DOT was fixed to meet
|
|
with the problem code convention.
|
|
|
|
The badblocks list regression test program has been updated to work
|
|
with previously made API name changes.
|
|
|
|
The ext2fs_free() command now uses the new badblocks API to avoid
|
|
using the compatibility layer.
|
|
|
|
Added new regression test cases; the run_e2fsck test script now
|
|
supports the ability for a test case to run a prepratory command
|
|
before running e2fsck.
|
|
|
|
E2fsprogs 1.17 (October 26, 1999)
|
|
=================================
|
|
|
|
Fixed nasty typo in fsck which caused parallelized fsck's to go into an
|
|
infinite loop.
|
|
|
|
Fixed a bug in fsck where it used strncmp to compare a binary UUID,
|
|
thus potentially causing problems if a binary UUID contained a NULL
|
|
character.
|
|
|
|
E2fsck now uses stricter checks for directory entries in pass 2:
|
|
zero-length filenames are not allowed; neither are 8 byte long
|
|
directory entries.
|
|
|
|
The debugfs "dirty" command now clears the filesystem valid bit.
|
|
(Previously this just set the dirty-as-in-needs-writing-out-to-disk
|
|
bit in the in-core superblock image. The new functionality is more
|
|
what the user expects, and is more useful.)
|
|
|
|
Added a debugging hook to test parallel fsck; if the environment
|
|
variable FSCK_FORCE_ALL_PARALLEL, then filesystems on the same drive
|
|
will be checked in parallel when they normally would not be.
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
Fixed some #ifdef's for compilation under the Hurd OS.
|
|
|
|
Fixed minor W2K compatibility problems.
|
|
|
|
Fixed some miscellaneous GCC warnings.
|
|
|
|
|
|
E2fsprogs 1.16 (October 22, 1999)
|
|
=================================
|
|
|
|
Fixed a race condition bug in fsck; when printing a progress bar, if
|
|
checking multiple filesystems in parallel, it was possible for fsck to
|
|
send e2fsck a SIGUSR1 signal before e2fsck had installed its signal
|
|
handler, which would cause it to terminate with a signal 10.
|
|
|
|
E2fsck now properly handles filesystems that have the
|
|
INCOMPAT_FILETYPE feature turned on. It can be used to convert a
|
|
filesystem into using or not using FILETYPE feature.
|
|
|
|
E2fsck now properly handles filesystems that have the IMAGIC feature
|
|
turned on (this is used on Linux AFS servers).
|
|
|
|
The mke2fs program now creates filesystems that have the filetype and
|
|
sparse_superblock features enabled by default, unless it is run on a
|
|
pre-2.2 kernel. These features are not supported by a pre-2.2 kernel,
|
|
so there is now a new flag -O which allows the user to specify with
|
|
which features she would like to create the filesystem; "mke2fs -O
|
|
none" will create a filesystsem compatible with 2.0 kernels.
|
|
|
|
The tune2fs program now has a -O option which allows the user to set
|
|
and reset "safe" filesystem features. Currently, the only ones which
|
|
allows to be modified are the filetype and sparse_superblock features.
|
|
Note setting or clearing either feature will require running e2fsck on
|
|
the filesystem afterwards. (n.b. Clearing the sparse_superblock feature
|
|
requires that there is enough free space on the filesystem for the
|
|
extra superblocks which will be created by e2fsck.)
|
|
|
|
Debugfs can now set and print filesystem features in the superblock
|
|
using the "features" command. Dumpe2fs will print out the complete
|
|
set of features when listing the superblock.
|
|
|
|
Dumpe2fs has new options -f (force) and -h (header-only).
|
|
|
|
Fixed a bug in e2fsck which could cause the PROGRAMMING ERROR/bonehead
|
|
message to come up. This could happen when decrementing or
|
|
incrementing a link count could result in an overflow.
|
|
|
|
Fixed a bug in e2fsck where the block count on the lost+found
|
|
directory would not be properly incremented when the directory was
|
|
expanded to the point where an indirect block needed to be allocated.
|
|
|
|
E2fsck now makes some additional sanity checks on the superblock to
|
|
avoid crashing or giving a memory allocation error if some of the
|
|
values in the superblock are unresonable (but the superblock otherwise
|
|
looks valid).
|
|
|
|
Fixed a bug in e2fsck where a very badly corrupted filesystem might
|
|
require two passes to completely fix the filesystem. This happened if
|
|
an inode claimed blocks that was part of the filesystem metadata
|
|
(typically, when garbage was written into an inode table or indirect
|
|
block, since this kind of filesystem corruption normally doesn't
|
|
happen otherwise).
|
|
|
|
On the Alpha, glibc declares st_flags although it isn't actually used;
|
|
the configure script was improved to detect this case so that
|
|
e2fsprogs can avoid using the non-functional stat field.
|
|
|
|
The manual pages were updated to use a more consistent formatting
|
|
style consistent with standard Unix man pages. Mke2fs's man page
|
|
added documentation for a few previously undocumented options.
|
|
|
|
Fixed minor display bugs in tune2fs and mke2fs.
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
Improved portability of e2fsprogs to non-Unix systems (in particular, NT).
|
|
|
|
Added features to parse and print feature strings into the e2p library.
|
|
(e2p_feature2string, e2p_string2feature, e2p_edit_feature).
|
|
|
|
ext2fs_mkdir() and ext2fs_new_dir_block() now creates directories
|
|
whose directory entries contain proper filetype information if the
|
|
filesystem supports it.
|
|
|
|
ext2fs_link() now uses the low 3 bits of its flags parameter to pass
|
|
the directory entry filetype information. This is used to set the
|
|
directory entry filetype information if the filesystem supports it.
|
|
|
|
Fixed a bug in ext2fs_expand_dir() where the block count in a
|
|
directory's inode would not be properly incremented when the directory
|
|
was expanded to the point where an indirect block needed to be
|
|
allocated.
|
|
|
|
|
|
E2fsprogs 1.15 (July 18, 1999)
|
|
==============================
|
|
|
|
Add configuration checks so that e2fsprogs will compile cleanly on
|
|
Linux 2.3 kernels that have renamed i_version to i_generation.
|
|
|
|
E2fsck now prints a progress/completion bar (and not just a simple
|
|
spinner) if the -C0 option is requested or if it receives a SIGUSR1
|
|
signal. Fsck will automatically manage the (potentially muliple)
|
|
e2fsck processes to print completion bars if it is given a -C option,
|
|
with the right thing happening if multiple filesystems are being
|
|
checked in parallel.
|
|
|
|
Mke2fs now has better automatic hueristics to determine the filesystem
|
|
parameters to be used for a particular filesystem. Added a new option
|
|
-T which allows the user to specify how the filesystem is to be used,
|
|
which helps mke2fs do a better job selecting the filesystem parameters.
|
|
|
|
Mke2fs now creates revision 1 filesystems by default, and with the
|
|
sparse superblock feature enabled. The sparse superblock feature is
|
|
not understood by Linux 2.0 kernels, so they will only allow read-only
|
|
mounts of filesystems with this sparse superblocks.
|
|
|
|
Fix bug where if /dev/null couldn't be opened (should never happen),
|
|
e2fsck would hang in a tight loop.
|
|
|
|
Make e2fsck handle the case where /lost+found isn't a directory.
|
|
|
|
E2fsck now uses mallinfo if it exists to get accurate statistics about
|
|
its memory usage.
|
|
|
|
Fix bug in e2fsck where it wouldn't check to see if a disconnected
|
|
inode had any problems before connecting it to /lost+found.
|
|
|
|
Add check to e2fsck so it makes sure that total number of inodes in
|
|
the filesystem is a sane number.
|
|
|
|
Fix fencepost error when clearing an the end of the block bitmap which
|
|
caused the last block in the bitmap not to get cleared.
|
|
|
|
Cleaned up a number of messages in e2fsck:
|
|
* The message "Group's #'s copy of the group descriptor..."
|
|
was fixed so that the correct number would be displayed.
|
|
* Added missing space in the "disk write-protected" error messsage
|
|
* Cleaned up the error message printed when a non-interactive
|
|
e2fsck needs to abort a check because the filesystem
|
|
appears to be mounted.
|
|
|
|
Added a new command-line utility, uuidgen, which will create and print
|
|
a UUID.
|
|
|
|
Make debugfs's icheck command more robust by checking to make sure an
|
|
inode has valid blocks before interarting over the inode's blocks.
|
|
|
|
UUID generation now uses a random-based scheme whenever possible to
|
|
prevent potential privacy problems.
|
|
|
|
Man pages for all of the UUID functions in the lirbary were added.
|
|
|
|
Fixed bug in fsck so it won't coredump if a filesystem not in
|
|
/etc/fstab is given to it.
|
|
|
|
Fsck now understands the UUID=xxxx and LABEL=yyyy forms in /etc/fstab
|
|
that most of the other mount utilities understands.
|
|
|
|
Mke2fs will make a filesystem even if it appears mounted if the force
|
|
option is given.
|
|
|
|
Dumpe2fs has new command-line options which allow a filesystem expert
|
|
to specify the superblock and blocksize when opening a filesystem.
|
|
This is mainly useful when examining the remains of a toasted
|
|
filesystem.
|
|
|
|
The badblocks program has been updated to display correctly on disks
|
|
with large block numbers.
|
|
|
|
The badblocks program no longer gives spurious errors when errors
|
|
occur on non-block boundaries, which is common if the blocksize is
|
|
larger than 1k.
|
|
|
|
Mke2fs will sync the disk device every MKE2FS_SYNC block groups if the
|
|
MKE2FS_SYNC environment variable is set. This is to work around a VM
|
|
bug in the 2.0 kernel. I've heard a report that a RAID user was able
|
|
to trigger it even using a 2.2 kernel, but hopefully it will not be
|
|
needed for most Linux 2.2 users.
|
|
|
|
Fixed miscellaneous documentation and man pages.
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
Cleaned up functions such as pass1_get_blocks, pass1_read_inode which
|
|
in e2fsck's pass1.c really should have been static.
|
|
|
|
The return value of the uuid_compare() function was changed to make it
|
|
match with the convetions used by strcmp, memcmp, and Paul Leach's
|
|
UUID sample document.
|
|
|
|
The "make depend" process has now been made more automated; it now
|
|
automatically word-wraps the dependencies, and only replaces source
|
|
Makefile.in if there has been a change in the dependencies. Also, a
|
|
top-level "make depend" now recurses through all the subdirectories
|
|
automatically.
|
|
|
|
The Makefile in .../util has been changed so that subst is built using
|
|
the native C compiler during a cross-compilation, since the subst
|
|
program is only used during the build process. Also add an explicit
|
|
rule to build util/subst by cd'ing to the correct directory and
|
|
running Makefile.
|
|
|
|
The man directories are defined in terms mandir, so that the configure
|
|
script can override the location of the manual pages.
|
|
|
|
The config files have been updated to recognize new machine types for
|
|
both the i386 and alpha families.
|
|
|
|
Fsck has been modified so that it will accurately create an
|
|
fsck_instance even when the noexecute flag is set. This allows for
|
|
accurate debugging of the fsck pass structure. Also, when the verbose
|
|
flag is given twice, fsck will print debugging information about when
|
|
fsck is waiting for jobs to finish.
|
|
|
|
|
|
E2fsprogs 1.14 (January 9, 1999)
|
|
================================
|
|
|
|
Fix the fstab parsing code so that it can handle blank lines and
|
|
comment characters. Also, missing pass numbers need to be treated as
|
|
zero.
|
|
|
|
Fixed a bug in e2fsck where under some circumstances (when e2fsck
|
|
needs to restart processing after fixing an egregious inconsistency)
|
|
it would try to access already freed memory.
|
|
|
|
E2fsck now prints non-printable characters in directory entries and
|
|
pathnames using '^' and 'M-' notation.
|
|
|
|
Fixed chattr so that it will ignore symbolic links when doing
|
|
recursive descent traversals. For both chattr and lsattr, no longer
|
|
print the version string unless the -V option is given.
|
|
|
|
Allow the system administrator to directly specify the number of
|
|
inodes desired in the filesystem, for some special cases where this is
|
|
necessary.
|
|
|
|
Fix portability problems so that e2fsprogs can be compiled under Linux
|
|
1.2 systems and Solaris systems.
|
|
|
|
Update the config.guess file with a more recent version that will
|
|
identify newer Linux platforms.
|
|
|
|
Programmer's notes
|
|
------------------
|
|
|
|
Ext2fs_read_inode and ext2fs_write_inode will now return an error if
|
|
an inode number of zero is passed to them.
|
|
|
|
E2fsprogs 1.13 (December 15, 1998)
|
|
==================================
|
|
|
|
Fixed a bug in debugfs where an error messages weren't getting printed
|
|
when the ext2 library routines to read inodes returned errors in the
|
|
stat, cmri and rm commands.
|
|
|
|
Fixed a bug in mke2fs so that if a ridiculous inode ratio parameter is
|
|
provided, it won't create an inode table smaller than the minimum
|
|
number of inodes required for a proper ext2 filesystem.
|
|
|
|
Fsck now parses the /etc/fstab file directly (instead of using
|
|
getmntent()), so that it can distinguish between a missing pass number
|
|
field and pass number field of zero. This caused problems for
|
|
diskless workstations where all of the filesystems in /etc/fstab have
|
|
an explicit pass number of zero, and fsck could not distinguish this
|
|
from a /etc/fstab file with missing pass numbers.
|
|
|
|
E2fsck will create a /lost+found directory if there isn't one in the
|
|
filesystem, since it's safer to create the lost+found directory before
|
|
it's needed.
|
|
|
|
Fixed e2fsck so that it would detect bogus immutable inodes which
|
|
happen to be sockets and FIFO files, and offer to clear them.
|
|
|
|
If a filesystem has multiple reasons why it needs to be checked, and
|
|
one of the reasons is that it is uncleanly mounted, e2fsck will print
|
|
that as the reason why the filesystem is being checked.
|
|
|
|
Cleaned up the output routines of mke2fs so that it doesn't overflow
|
|
an 80 column display when formating really big filesystems.
|
|
|
|
Added a sanity check to e2fsck to make sure that file descriptors 0,
|
|
1, 2 are open before opening the hard disk. This avoids a problem
|
|
where a broken program might exec e2fsck with those file descriptors
|
|
closed, which would cause disastrous results if the kernel returns a
|
|
file descriptor for the block device which is also used by FILE *
|
|
stdout.
|
|
|
|
Fixed up the e2fsck progress reporting functions so that the values
|
|
reliably reach 100% at the completion of all of the e2fsck passes.
|
|
|
|
Fixed minor documentation bugs in man pages and usage messages.
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
Fixed a number of lint warnings in the ext2fs library and potential
|
|
portability problems from other OS's header files that might define
|
|
CPP macros for names like "max" and "min".
|
|
|
|
ext2fs_badblocks_list_add() has been made more efficient when it needs
|
|
to grow the bad blocks list.
|
|
|
|
Fixed a bug in e2fsck which caused it to dereference a freed pointer
|
|
just before exiting.
|
|
|
|
Fixed the substition process for generating the mk_cmds and compile_et
|
|
scripts so that they will work outside of the build tree.
|
|
|
|
Add sanity check to e2fsck so that if an internal routine
|
|
(ext2fs_get_dir_info) returns NULL, avoid dereferencing the pointer
|
|
and causing a core dump. This should never happen, but...
|
|
|
|
E2fsprogs 1.12 (July 9, 1998)
|
|
==================================
|
|
|
|
E2fsprogs now works with glibc (at least with the version shipped wtih
|
|
RedHat 5.0). The ext2fs_llseek() function should now work even with
|
|
i386 ELF shared libraries and if llseek() is not present. We also
|
|
explicitly do a configure test to see if (a) llseek is in libc, and
|
|
(b) if llseek is declared in the system header files. (See standard
|
|
complaints about libc developers don't understand the concept of
|
|
compatibility with previous versions of libc.)
|
|
|
|
The ext2fs library now writes out the block group number in each of
|
|
the superblock copies. This makes it easier to automatically
|
|
determine the starting block group of the filesystem when the block
|
|
group information is trashed.
|
|
|
|
Added support for the EXT2_FEATURE_INCOMPAT_FILETYPE feature,
|
|
which means that e2fsprogs will ignore the high 8 bits of the
|
|
directory entry's name_len field, so that it can be used for other
|
|
purposes.
|
|
|
|
Added support for the EXT2_FEATURE_RO_COMPAT_LARGE_FILE feature.
|
|
E2fsprogs will now support filesystems with 64-bit sized files.
|
|
|
|
Added support for the EXT2_FEATURE_COMPAT_DIR_PREALLOC feature.
|
|
|
|
Added new program "e2label", contributed by Andries Brouwer. E2label
|
|
provides an easy-to-use interface to modify the filesystem label.
|
|
|
|
Fixed bug so that lsattr -v works instead of producing a core dump.
|
|
|
|
Fixed a minor bug in mke2fs so that all groups with bad superblock
|
|
backup blocks are printed (not just the first one).
|
|
|
|
Mke2fs will check the size of the device, and if the user specifies a
|
|
filesystem size larger than the apparent size of the device it will
|
|
print a warning message and ask if the user wants to proceed.
|
|
|
|
E2fsck has a new option -C, which sends completion information to the
|
|
specified file descriptor. For the most part, this is intended for
|
|
programs to use, although -C 0 will print a spinning character to the
|
|
stdout device, which may be useful for users who want to see something
|
|
happening while e2fsck goes about its business.
|
|
|
|
Fixed a bug in e2fsck which could cause a core dump when it needs to
|
|
expand the /lost+found directory, and sometimes the bitmaps haven't
|
|
been merged in. Also fixed a related bug where ext2fs_write_dir_block
|
|
was used to write out a non-directory block. (Which would be bad on a
|
|
non-Intel platform with byte swapping going on.)
|
|
|
|
Fixed bug in e2fsck where it would print a "programming error" message
|
|
instead of correctly identifying where a bad block was in used when
|
|
the bad block was in a non-primary superblock or block group
|
|
descriptor. Also fixed a related bug when sparse superblocks are in
|
|
use and there is a bad block where a superblock or block group
|
|
descriptor would have been in a group that doesn't include a
|
|
superblock.
|
|
|
|
Fixed a bug in e2fsck (really in libext2fs's dblist function) where if
|
|
the block group descriptor table is corrupt, it was possible to try to
|
|
allocate a huge array, fail, and then abort e2fsck.
|
|
ext2fs_get_num_dirs() now sanity checks the block group descriptor,
|
|
and subsitutes reasonable values if the descriptors are obviously bogus.
|
|
|
|
If e2fsck finds a device file which has the immutable flag set and the
|
|
i_blocks beyond the normal device number are non-zero, e2fsck will
|
|
offer to remove it, since it's probably caused by garbage in the inode
|
|
table.
|
|
|
|
When opening a filesystem, e2fsck specially checks for the EROFS error
|
|
code, and prints a specific error message to the user which is more
|
|
user friendly.
|
|
|
|
If the filesystem revision is too high, change the e2fsck to print
|
|
that this is either because e2fsck is out of date, or because the
|
|
superblock is corrupt.
|
|
|
|
E2fsck now checks for directories that have duplicate '.' and '..'
|
|
entries, and fixes this corruption.
|
|
|
|
E2fsck no longer forces a sync of the filesystem (with attendant sleep
|
|
calls) at all times. The ext2fs_flush() function now performs a sync
|
|
only if it needed to write data blocks to disk.
|
|
|
|
Fixed a minor bug in e2fsck's pass1b's file cloning function, where
|
|
certain errors would not be properly reported.
|
|
|
|
Updated and expanded a few points in the man pages which users
|
|
complained wheren't explicit enough.
|
|
|
|
Added special case byte-swapping code if compiling on the PowerPC, to
|
|
accomodate the strange big-endian variant of the ext2 filesystem that
|
|
was previously used on the PowerPC port.
|
|
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
Removed C++ keywords from the ext2fs libraries so that it could be
|
|
compiled with C++.
|
|
|
|
E2fsck's internal organization has now been massively reorganized so
|
|
that pass*.c don't have any printf statements. Instead, all problems
|
|
are reported through the fix_problem() abstraction interface. E2fsck
|
|
has also been revamped so that it can be called as a library from a
|
|
application.
|
|
|
|
Added new fileio primitives in libext2fs for reading and writing
|
|
files on an unmounted ext2 filesystem. This interface is now used by
|
|
debugfs.
|
|
|
|
Added a new libext2fs function for mapping logical block numbers of
|
|
a file to a physical block number.
|
|
|
|
Added a new libext2fs function, ext2fs_alloc_block(), which allocates
|
|
a block, zeros it, and updates the filesystem accounting records
|
|
appropriately.
|
|
|
|
Added a new libext2fs function, ext2fs_set_bitmap_padding(), which
|
|
sets the padding of the bitmap to be all one's. Used by e2fsck pass 5.
|
|
|
|
The libext2fs functions now use a set of memory allocation wrapper
|
|
functions: ext2fs_get_mem, ext2fs_free_mem, and ext2fs_resize_mem,
|
|
instead of malloc, free, and resize. This makes it easier for us to
|
|
be ported to strange environments where malloc, et. al. aren't
|
|
necessarily available.
|
|
|
|
Change the libext2fs fucntion to return ext2-specific error codes
|
|
(EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND, for example) instead of using
|
|
and depending on the existence of system error codes (such as EEXIST
|
|
and ENOENT).
|
|
|
|
Renamed io.h to ext2_io.h to avoid collision with other OS's header
|
|
files.
|
|
|
|
Add protection against ext2_io.h and ext2fs.h being included multiple
|
|
times.
|
|
|
|
The types used for memory lengths, etc. have been made more portable.
|
|
In generla, the code has been made 16-bit safe. Added Mark
|
|
Habersack's contributed DOS disk i/o routines.
|
|
|
|
Miscellaneous portability fixes, including not depending on char's
|
|
being signed.
|
|
|
|
The io_channel structure has a new element, app_data, which is
|
|
initialized by the ext2fs routines to contain a copy of the filesystem
|
|
handle.
|
|
|
|
ext2fs_check_directory()'s callback function may now return the error
|
|
EXT2_ET_CALLBACK_NOTHANDLED if it wishes ext2fs_check_directory() to
|
|
really do the checking, despite the presence of the callback function.
|
|
|
|
|
|
E2fsprosg 1.11 (June 17, 1997)
|
|
==============================
|
|
|
|
Fixed e2fsck to detect (previously ignored) conflicts between the
|
|
superblock or block group descriptors and block bitmaps, inode
|
|
bitmaps, and inode tables.
|
|
|
|
Fixed bug in e2fsck so that when the message printed out when a block
|
|
or inode bitmap conflicts with other data, it has the correct group
|
|
number.
|
|
|
|
Fixed bug in e2fsck and mke2fs where the blocksize wasn't being passed
|
|
to badblocks. This meant that not all of the filesystem was being
|
|
tested for bad blocks!
|
|
|
|
Fixed an array boundary overrun case which cropped up in
|
|
ext2fs_badblocks_list_test when a user tried running "mke2fs -c
|
|
-b 4096".
|
|
|
|
Adjusted the number of columns printed by mke2fs when displaying the
|
|
superblock backups to avoid running over 80 columns when making a
|
|
really big filesystem.
|
|
|
|
Fixed up the man pages for e2fsck, debugfs, badblocks, chattr,
|
|
dumpe2fs, fsck, mke2fs, and tune2fs (typos and other minor grammar
|
|
fixes), thanks to some suggestions from Bill Hawes (whawes@star.net).
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
Fixed install rule in lib/ss so that ss_err.h is actually getting
|
|
installed.
|
|
|
|
Fixed bug in ext2fs_copy_bitmap; the destination bitmap wasn't getting
|
|
bassed back to the caller.
|
|
|
|
Fixed bug in ext2fs_inode_scan_goto_blockgroup; it had not been
|
|
setting the current inode number (which meant this function wasn't
|
|
working at all).
|
|
|
|
Fixed bug in ext2fs_resize_generic_bitmap; it had not be zeroing all
|
|
blocks in the bitmap when increasing the size of the bitmap.
|
|
|
|
Changed the initial number of blocks allocated by ext2fs_init_dblist()
|
|
to be more realistic.
|
|
|
|
Added a new function ext2fs_allocate_group_table, which sets up the
|
|
group descriptor information (and allocates inode and block bitmaps,
|
|
and inode tables for a particular group). The function was created by
|
|
factoring out code form ext2fs_allocate_tables().
|
|
|
|
Added a new function ext2fs_move_blocks which takes a bitmap of the
|
|
blocks to be moved, and moves them to another location on the
|
|
boardboard.
|
|
|
|
Make the unix_io channel's io_channel_flush implementation calls sync()
|
|
to to flush the kernel buffers to disk.
|
|
|
|
Added a new function ext2fs_dblist_count returns the number of
|
|
directory blocks in dblist.
|
|
|
|
|
|
E2fsprogs 1.10 (April 24, 1997)
|
|
===============================
|
|
|
|
Mke2fs once again defaults to creating revision #0 filesystems, since
|
|
people were complaining about breaking compatibility with 1.2 kernels.
|
|
Warning messages were added to the mke2fs and tune2fs man pages that
|
|
the sparse superblock option isn't supported by most kernels yet (1.2
|
|
and 2.0 both don't support parse superblocks.)
|
|
|
|
Added new flag to mke2fs, -R <raid options>, which allows the user to
|
|
tell mke2fs about the RAID configuration of the filesystem. Currently
|
|
the only supported raid option is "stride" which specifies the width
|
|
of the RAID stripe.
|
|
|
|
Fixed bug in e2fsck where pass1b would bomb out if there were any
|
|
blocks marked bad in the inode table.
|
|
|
|
Fixed rare bug in mke2fs where if the user had a very unlucky number
|
|
of blocks in a filesystem (probability less than .002) the resulting
|
|
filesystem would be corrupt in the last block group.
|
|
|
|
Fixed bug where if e2fsck tried to allocate a block to fix a
|
|
filesystem corruption problem and the filesystem had no free blocks,
|
|
ext2fs_new_block() would loop forever.
|
|
|
|
The configure script now checks explicitly to see if "-static" works,
|
|
since that can't be assumed to be true --- RedHat doesn't install
|
|
libc-static by default.
|
|
|
|
Fixed bug in libext2's block iterator functions where under some
|
|
cirmcustances, file with holes would cause the bcount parameter to the
|
|
callback function to be incorrect. This bug didn't affect any of
|
|
e2fsprogs programs, but it was discovered by Paul Mackerras, the
|
|
author of the PPC boot loader.
|
|
|
|
Removed use of static variables to store the inode cache in libext2fs.
|
|
This caused problems if more than one filesystem was accessed via
|
|
libext2fs (static variables in libraries are generally a bad idea).
|
|
Again, this didn't affect e2fsprogs programs, but it was discovered by
|
|
Paul Mackerras.
|
|
|
|
Fixed minor bugs and version code drift to assure that e2fsprogs 1.10
|
|
will compile cleanly with 1.2.13 kernels (even with a.out shared
|
|
libraries!)
|
|
|
|
Programmer's notes:
|
|
-------------------
|
|
|
|
Added new functions to duplicate an ext2 filesystem handle, and its
|
|
associated substructure. New functions: ext2fs_dup_handle(),
|
|
ext2fs_copy_dblist(), ext2fs_badblocks_copy(), ext2fs_copy_bitmap().
|
|
Other structures, such as the io_channel and the inode_cache, now have
|
|
a ref count so that they only get freed when they are no longer used
|
|
by any filesystem handle. (These functions were added as part of the
|
|
development effort for an ext2 resizer).
|
|
|
|
E2fsprogs 1.09 (April 14, 1997)
|
|
===============================
|
|
|
|
Fixed bug in mke2fs (really in lib/ext2fs/initialize.c) which was
|
|
accidentally introduced in the 1.08 release. The overhead calculation
|
|
was accidentally removed, which caused ext2fs_initialize() to not
|
|
notice when the filesystem size needed to be adjusted down because
|
|
there wasn't enough space in the last block group.
|
|
|
|
Fixed bug in version parsing library routine; it was always parsing
|
|
the library version string, instead of using the passed-in string.
|
|
|
|
Clarified chattr man page.
|
|
|
|
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.
|