Theodore Ts'o [Tue, 2 Dec 2003 12:56:42 +0000 (07:56 -0500)]
When testing a disk using e2fsck -c, use the list
of new bad blocks to replace the current list of bad
blocks. This way "e2fsck -c" can be used to recover from
a corrupted bad block inode.
Theodore Ts'o [Sat, 22 Nov 2003 18:54:38 +0000 (13:54 -0500)]
com_err.h: Retore the type of n_msgs in the error_table
structure to "int" from "unsigned int" fix a core dumping
bug in the com_right() function. (Addresses Debian bug
#213450)
Theodore Ts'o [Fri, 21 Nov 2003 16:02:22 +0000 (11:02 -0500)]
In e2fsck, given an extra grace period before actually forcing
a filesystem check if a laptop system reports it is running on
battery. This way the laptop will be biased to waiting until
it is on AC power before doing a filesystem check. (Addresses
Debian bug #205177)
Theodore Ts'o [Fri, 21 Nov 2003 15:41:58 +0000 (10:41 -0500)]
pass1.c (e2fsck_pass1), problem.h (PR_1_BB_FS_BLOCK),
problem.c (PR_1_BB_FS_BLOCK, PR_1_BBINODE_BAD_METABLOCK_PROMPT):
Fix up the handling of corrupted indirect blocks in the
bad block. We now correctly handle the case where there
is an overlap between a block group descriptor or
a superblock and a bad block indirect block. In the case
where the indirect block is corrupted, we now suggest
"e2fsck -c".
Theodore Ts'o [Fri, 21 Nov 2003 14:10:29 +0000 (09:10 -0500)]
Check the returned name from blkid_get_devname in tune2fs and
e2fsck, and print an error if the requested LABEL/UUID does
not exist (previously, we core dumped!)
Theodore Ts'o [Fri, 21 Nov 2003 14:02:21 +0000 (09:02 -0500)]
Centeralize calculation of which blocks are reserved/used for
the superblock and block group descriptors into two functions:
ext2fs_reserve_super_and_bgd, found in lib/ext2fs/alloc_sb.c, and
ext2fs_super_and_bgd_lock, found in lib/ext2fs/close.c.
Change e2fsck/pass1.c (mark_table_blocks), lib/ext2fs/closefs.c
(ext2fs_flush), lib/ext2fs/initialize.c (ext2fs_initialize),
and misc/dumpe2fs.c (list_desc) to use these functions.
e2fsck/ChangeLog
pass1.c (mark_table_blocks): Use the new function
ext2fs_reserve_super_and_bgd to calculate the blocks to be
reserved.
lib/ext2fs/ChangeLog
closefs.c (ext2fs_super_and_bgd_loc): New function which
centralizes the calculation of the superblock and block
group descriptors.
(ext2fs_flush): Use ext2fs_super_and_bgd_lock to figure
out where to write the superblock and block group
descriptors.
alloc_sb.c (ext2fs_reserve_super_and_bgd): New function which
reserves space in the block bitmap using
ext2fs_super_and_bgd_loc.
initialize.c (ext2fs_initialize): Use
ext2fs_reserve_super_and_bgd to initialize the block bitmap.
misc/ChangeLog
dumpe2fs.c (list_desc): Use ext2fs_super_and_bgd_loc to
determine the locations of the superblock and block group
descriptors.
Mke2fs has been modified to honor the MKE2FS_SKIP_PROGRESS,
MKE2FS_DEVICE_SECTSIZE, and MKE2FS_SKIP_CHECK_MSG in order
facilitate the regression testing.
mke2fs.c (set_fs_defaults): Fix bug which caused -T largefile or
-T largefile4 to core dump due to a division by zero
error. (Addressed Debian bug #207082)
Theodore Ts'o [Mon, 25 Aug 2003 01:36:38 +0000 (21:36 -0400)]
util.c (get_backup_sb): Check to make sure the context is passed
in non-NULL before trying to dereference it. Otherwise we
might core dump when called to expand %S in a problem
description.
Theodore Ts'o [Thu, 21 Aug 2003 05:53:07 +0000 (01:53 -0400)]
Fix misc. debian packaging problems.
* Move the initrd script from /etc/mkinitrd/scripts to
/usr/share/initrd-tools/scripts so that mkinitrd will not remove
the file when it is uninstalled. (Addresses Debian bug #204019)
* Remove unneeded files in debian directory: blkid-dev.substvars and
e2fsprogs-bf.lintian-overrides. (Addresses Debian bug #203914)
* Support "noopt" in DEB_BUILD_OPTIONS instead of "debug".
(Addresses Debian bug #203914)
Theodore Ts'o [Thu, 21 Aug 2003 04:40:26 +0000 (00:40 -0400)]
Add support for backing up the journal inode location in the
superblock. E2fsck will automatically save the journal information
in the superblock if it is not there already, and will use it if the
journal inode appears to be corrupted. ext2fs_add_journal_inode()
will also save the backup information, so that new filesystems
created by mke2fs and filesystems that have journals added via
tune2fs will also have journal location written to the superblock as
well. Debugfs's logdump command has been enhanced so that it can
use the journal information in the superblock.
The debugfs man page has been improved to more fully describe the
logdump command.
Added two new functions, ext2fs_file_open2() and
ext2fs_inode_io_intern2() which take a pointer to an inode structure;
this is needed so that e2fsck and debugfs can synthesize a
fake journal inode and use it to access the journal.
Theodore Ts'o [Tue, 19 Aug 2003 14:08:34 +0000 (10:08 -0400)]
e2fsck.h, unix.c (PRS, e2fsck_clear_progbar,
e2fsck_simple_progress): Don't print the ^A and ^B
characters which bracket the progress bar when the e2fsck
program is talking directly to a tty, but only when it is
being piped to another program. (Addresses Debian bug
#204137)
unix.c: Move some initialized variables to the BSS segment to
shrink the size of the e2fsck executable.
Theodore Ts'o [Fri, 1 Aug 2003 13:41:07 +0000 (09:41 -0400)]
ext2fs_getmem(), ext2fs_free_mem(), and ext2fs_resize_mem()
all now take a 'void *' instead of a 'void **' in order to
avoid pointer aliasing problems with GCC 3.x.
Theodore Ts'o [Fri, 1 Aug 2003 04:58:00 +0000 (00:58 -0400)]
badblocks.c (set_o_direct): Add check to make sure the file
offset of the device is page aligned. (Addresses Debian
Bug #203713)
badblocks.c (test_ro, test_rw): Add code to recover after an
error so that we continue reading on page-aligned
boundaries. (Thanks to Philippe Troin <phil@fifi.org> for
the patch.)
Explicitly specify the version of libblkid1 needed in e2fsprogs.shlibs.local
in order to avoid picking up the wrong depedency. (Debian packaging
issue, closes Debian bug #203157)
Addresses Debian bug #201050. Set the libc-dev dependency correctly
and set DEB_{HOST,BUILD}_* variables correctly for architectures
other than *-linux and *-gnu.
mke2fs.c (PRS): Add warning if using -j and the blocksize is
greater than 4096, since some kernels don't support ext3
with large block sizes. (Addresses Debian bug #193773)
Do not include the top-level ChangeLog file in /usr/share/doc/e2fsprogs
for debian packages. The RELEASE-NOTES file is what people should be
reading instead.
fsck.c (wait_many): Rename wait_all() to wait_many(), and have
new semantics: WAIT_ALL vs. WAIT_ATLEAST_ONE. This fixes
a bug where when fsck is waiting for another partition on
the same spindle, it spins wasting a lot of CPU.
tag.c (blkid_find_dev_with_tag): If blkid_probe_all() returns an
error, then reflect that error upwards; don't try again
(forever). This prevents an infinite loop when /proc and
the /etc/blkid.tab file are not present.
badblocks.c (do_read, do_write, test_rw): Change the read/write
test to honor the -c option (number of blocks at a time).
do_read and do_write will try to turn on the O_DIRECT flag
if it appears that it is possible to use it. (Addresses
Debian bug #198006)
mke2fs.c (set_fs_defaults): If sector_size is 0, don't use it to
set the blocksize to zero. This causes MD devices to fail
since they don't support the BLKSSZGET ioctl. (Addresses
Debian bug #196734)
Theodore Ts'o [Tue, 24 Jun 2003 21:34:02 +0000 (17:34 -0400)]
Fix bug in resize2fs which caused it to fail on filesystems with a
non-empty bad block list. Resize2fs now discards any blocks on the
badblock list which are no longer part of the filesystem as the result
of a filesystem shrink. (Note: this means that shrinking and then
enlarging a filesystem is no longer a reversible operation;
information about bad blocks in the part of the filesystem
which is to be chopped off will be lost.)
Theodore Ts'o [Mon, 9 Jun 2003 00:32:46 +0000 (20:32 -0400)]
resize2fs.8.in: Make explicit that you need to run resize2fs
after using fdisk to adjust the partition size when
expanding the filesystem. (Addresses Debian Bug #195616)
Theodore Ts'o [Wed, 21 May 2003 21:28:29 +0000 (17:28 -0400)]
mke2fs.c (PRS, set_fs_defaults): If the sector size of the
device is larger than the default block size, then use the
sector size of the device as the default block size.
getsectsize.c (ext2fs_get_device_sectsize): New function which
returns the hardware sector size (if it is available).
Theodore Ts'o [Sun, 18 May 2003 05:11:52 +0000 (01:11 -0400)]
badblocks.c: Use an unsigned integer to support 4-byte test
patterns with the high bit set. Let the user explicitly
specify a random pattern with the argument "random".
Theodore Ts'o [Sat, 17 May 2003 20:29:27 +0000 (16:29 -0400)]
MCONFIG.in, configure.in: Only put the intl directory in the -I
search path if we are using --with-internal-gettext.
Otherwise causes compatibility problems with the woody
glibc. (Addresses Debian bug #193372)
Theodore Ts'o [Wed, 14 May 2003 03:32:59 +0000 (23:32 -0400)]
main.c (main): Add the ability to specify units to the size
parameter, and make the error and information messages
display explicitly the blocksize used by the filesystem,
to avoid confusion. (Addresses Debian bug: #189814)
Theodore Ts'o [Wed, 14 May 2003 03:03:43 +0000 (23:03 -0400)]
util.c, ls.c, logdump.c, htree.c, dump.c, debugfs.h, debugfs.c, ChangeLog:
util.c (reset_getopt), debugfs.c (do_open_filesys,
do_show_super_stats), ls.c (do_list_dir), dump.c (do_dump),
htree.c (do_htree_dump, do_dx_hash), logdump.c (do_logdump):
Define and use a new function, reset_getopt(), which does whatever
is necessary to reset getopt() again. This is different for
different implementations, so the portabilty issues are a bit of a
nightmare. (Addresses Debian bug #192834)
Theodore Ts'o [Thu, 8 May 2003 14:39:50 +0000 (10:39 -0400)]
Debian packaging issues:
* Remove e2fsprogs-bf package, as it is obsolete. (Closes: #183453)
* Remove NLS support from e2fsprogs-udeb. Save 5.5k on the boot
floppies / install media.
Theodore Ts'o [Wed, 7 May 2003 13:52:14 +0000 (09:52 -0400)]
badblocks.c, badblocks.8.in: Functional enhancements contributed
by Thayne Harbaugh. These patches allow the -t option to
control the test pattern(s) used when checking the disk.
Test patterns may be specified in all modes (r/w, r/o and
non-destructive).
Theodore Ts'o [Wed, 7 May 2003 12:35:38 +0000 (08:35 -0400)]
badblocks.c (test_rw): Fix minor memory leak with test_rw() is
called for multiple passes.
(test_nd): Fix bug in chosing randomness for the
non-destructive test. We were only using 1 bit of
randomness per byte instead of 8 due to a bit-shift bug.
Also, initialize the random number generator from the time
in main(). Thanks to Thayne Harbaugh for pointing out
these bugs.