Various portability fixes which should help out HURD.
The iterate_on_dir function in libe2p has been changed to be more
general, so it relies less on the layout of struct dirent. We also
make sure the errno returned by the ioctl is returned by
fgetversion() and fsetversion().
unix_io.c (unix_open): Only attempt the setrlimit workaround if
the kernel version is 2.4.10 -- 2.4.17, since otherwise an
old version of glibc (built against 2.2 headers) will
interact badly with the workaround to actually cause more
problems. I hate it when the glibc folks think they're
being smarter than the kernel....
mke2fs.c (zap_sector): Clear the buffer *after* testing for the
BSD sector label. Otherwise the first 512 bytes don't get
zapped. (Addresses Debian bug #147256.)
Theodore Ts'o [Sun, 2 Jun 2002 01:48:24 +0000 (21:48 -0400)]
fs_ext2.c (fs_init_task): Fix minor bugs pointed out by Steve
Pratt. Fixed a selection bug and added checks to make
sure volumes are not mounted when creating the list of
volumes which can be mkfs'ed by the ext2/3 plugin.
Andreas Dilger [Thu, 23 May 2002 06:32:34 +0000 (00:32 -0600)]
ext2_fs.h: Remove macros accessing u.ext2_sb field and use
the EXT2_SB() macro instead. Remove kernel function
prototypes also. This matches the 2.5 kernel, and
is also cleaner for other reasons. Whitespace cleanup.
Theodore Ts'o [Wed, 22 May 2002 01:19:14 +0000 (21:19 -0400)]
Check for inodes which are too big (either too many blocks, or
would cause i_size to be too big), and offer to truncate the inode.
Remove old bogus i_size checks.
Add test case which tests e2fsck's handling of large sparse files.
Older e2fsck with the old(er) bogus i_size checks didn't handle
this correctly.
Theodore Ts'o [Tue, 21 May 2002 13:14:17 +0000 (09:14 -0400)]
Fix up Andreas' changeset. Avoid use of dynamic automatic arrays,
and check for EXT2_INDEX_FL for special devices, and consider them to
be invalid if they are set.
Andreas Dilger [Thu, 16 May 2002 09:20:07 +0000 (03:20 -0600)]
Add support for creating and checking 8192-byte blocksize filesystems.
We complain if you try to create such a filesystem on a system with 4096
byte PAGE_SIZE.
Add checks for valid inode size for undocumented -I option.
Theodore Ts'o [Mon, 13 May 2002 11:53:11 +0000 (07:53 -0400)]
Fix up ncurses interface so that it handles resizes correctly.
Removed the readline library (still available using if HAVE_READLINE is defined)
since it really doesn't play well with ncurses. The only real feature it added
was command completion, and it didn't really handle it completely correctly anyway.
(If readline printed a completion list, it completely screwed up the screen.)
We now use the wgetch ncurses interface to get input; this allows the PGDN and PGUP
keys to work correctly, and also helped fix up the resizing logic.
Theodore Ts'o [Sat, 11 May 2002 23:17:00 +0000 (19:17 -0400)]
Integrate ext2ed into the e2fsprogs build system, and make minimal changes so
that it will compile on modern systems. The top-level makefile does not recurse
into the ext2ed directory for now, pending determination of whether the original
author is still maintaining ext2ed.
The documentation files have been renamed to remove the version from the filename.
In addition, the SGML files have been converted from LinuxDoc to DocBook.
The way root_bindir, root_sbindir, and root_libdir have been changed so that
if root_prefix is not set, the values set by the configure command-line options to
set the directory names using --bindir, --sbindir, --libdir will affect the
root_bindir, et.al Makefile variables.
ismounted.c (check_mntent_file, is_swap_device): Verify that the
file we are checking is a block device file before looking
at st_rdev, since it's not valid for normal files.
(is_swap_device): Move so that it is outside the
HAVE_MNTENT_H, so that it is always built.
util.c (parse_ulong): Fix typo which cases parse_ulong to
coredump if the err variable is filled in (for example, if
the -b or -s options are passed to the debugfs's
command-line invocation).
main.c (main): If we are resizing a plain file which is smaller
than the requested size, then we will attempt to
transparently extend the filesize in a sparse fashion by
writing a block at the end of the requested part of the
filesystem.
main.c (main), resize2fs.c (resize_fs), resize2fs.h: Change the
function prototype of resize_fs() so that it can modify
the new_size parameter with the actual new size of the
filesystem after the resize operation. (This can
sometimes be less than the requested new size if there
isn't enough space to create the necessary block group
metadata for that last bit of disk space.) Resize2fs now
prints the actual new size of the filesystem when it finishes.
Theodore Ts'o [Tue, 12 Mar 2002 06:05:06 +0000 (01:05 -0500)]
dirblock.c (ext2fs_read_dir_block2, ext2fs_write_dir_block): New
functions which take an extra flags argument. The flag
EXT2_DIRBLOCK_V2_STRUCT will reverse when the name_len
field is byte swampped on big-endian machines, since in
the V2 structure, name_len is a char field which is
doesn't need to be byte swapped --- except if an
old-style kernel had byte-swapped the name_len field
as part of the V1 structure.
Also fixed a bug in debugfs which used ext2_dir_entry_2 without
worrying about the above issue, with the net result that "ls -l"
would print an incorrect file type on big-endian systems.
Theodore Ts'o [Tue, 26 Feb 2002 19:59:39 +0000 (14:59 -0500)]
Update Changelog messages to use tytso@mit.edu for all addresses
after September 7, 2001. (Forgot to update my emacs file to get
rid of the tytso@valinux.com address. Oops.)
Theodore Ts'o [Sun, 24 Feb 2002 08:08:57 +0000 (03:08 -0500)]
Update makefiles to install mkfs.ext3, and to install man pages for
mkfs.ext2/3 and fsck.ext2/3. Also remove any compressed man pages
before installing the man pages.
Theodore Ts'o [Tue, 12 Feb 2002 07:34:44 +0000 (02:34 -0500)]
Lots of small random portability fixes to make e2fsprogs build
under AIX --- even without the 5L compatibility toolkit, and even
using the uber-crippled AIX native C compiler.
Theodore Ts'o [Thu, 3 Jan 2002 09:55:25 +0000 (04:55 -0500)]
Add new debugfs commands and arguments which make it easier to
recover deleted files. The lsdel command now takes an optional
argument which allows the user to only see the most recently
deleted files. Also added a new command, undel, which automates
undeleting a deleted inode and linking it back to a directory.
Also added an optional count argument to the testb, freeb, setb,
and find_free_block commands. The ls command now takes a new
option, -d, which lists deleted directory entries.
Factored out out commonly used code into utility subroutines
for ease of maintenance and to make the executable size smaller.
Theodore Ts'o [Thu, 3 Jan 2002 08:29:19 +0000 (03:29 -0500)]
dir_iterate.c (ext2fs_dir_iterate2, ext2fs_process_dir_block):
Add support for a new flag, DIRENT_FLAG_INCLUDE_REMOVED,
which will return deleted directory entries.
ext2fs_dir_iterate2 takes a new callback function which
is identical with the one used by
ext2fs_dblist_dir_iterate(). If the directory entry is
deleted, the callback function will be called with the
entry paraemter set to DIRENT_DELETED_FILE.
Makefile.in, alloc_stats.c (ext2fs_inode_alloc_stats,
ext2fs_block_alloc_stats): New functions which update
block/inode allocation statistics in the bitmaps, block
group descriptors, and superblock.
mkjournal.c (mkjournal_proc), mkdir.c (ext2fs_mkdir),
expanddir.c (expand_dir_proc), bb_inode.c
(clear_bad_block_proc, set_bad_block_proc,
ext2fs_update_bb_inode), alloc.c (ext2fs_alloc_block):
Update to use new block/inode allocation statistics.