f_imagic: New test case which tests handling of imagic inodes in an
non-imagic-enabled filessystem.
f_imagic_fs: New test case which tests handling of imagic inodes in an
imagic-enabled filesystem.
f_filetype: New test case which tests setting filetype information in
a filesystem. Also tests handling of immutable special files
(device/fifo).
run_e2fsck: Add support for PREP_CMD, which allows a test case to
specify some commands which will be run (via eval) after the image is
compressed and before running e2fsck.
f_expand: Make test case better by testing increasing the size of
lost+found where an indirect block must be created. Also add checks
to see what happens when directories are disconnected because their
containing directory is destroyed (turned into a socket :-)
f_dupfsblks: Add additional test cases where files share duplicate
blocks with both other files and filesystem metadata.
e2fsck.h:
pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
pass1_check_directory, e2fsck_use_inode_shortcuts): Make pass1_* be
private static functions, and create new function
e2fsck_use_inode_shortcuts which sets and clears the inode shortcut
functions in the fs structure.
e2fsck.h:
pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
exported function.
pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check if a
disconnected inode has any problems before connecting it to
/lost+found. Bug and suggested fix by Pavel Machek <pavel@bug.ucw.cz>
ChangeLog, swapfs.c:
swapfs.c (ext2fs_swap_inode): Add compatibility for Linux 2.3 kernels
that use i_generation instead of i_version. Patch supplied by Jon
Bright <sircus@sircus.demon.co.uk>.
ChangeLog, mke2fs.8.in:
mke2fs.8.in: Fix typo in man page which caused the badblocks command
to not show up in the "SEE ALSO" section.
ChangeLog, expect.1, expect.2, image.gz, name:
f_recnect_bad: New test which checks the case where a disconnect inode
also bad inode fields; we need to make sure e2fsck offers to fix the
inode (or clear the inode, as necessary).
message.c (safe_print): New function which prints strings, converting
non-printable characters using the '^' and M-notation. This function
is now used to print directory name entries and pathnames.
ChangeLog:
Update for release of E2fsprogs 1.14.
f_badtable, f_illitable, f_lpf: Update to deal with the fact that
e2fsck will now create a lost+found directory at the end of
pass 3 if one isn't present.
ChangeLog:
Oops; premature checkin of ChangeLog.
f_swapfs: Fix script to ignore the version string header which debugfs
now prints when it starts up.
libext2fs.texinfo:
Update copyright notice and revision date.
RELEASE-NOTES, version.h:
Update for 1.12 release.
test_icount.c (main): The variable which gets the return value from
getopt should be an int so that the comparisons against EOF work on
systems with unsigned chars.
Add a -V option which displays the current version.
ChangeLog, unix.c:
unix.c (e2fsck_update_progress): Remove unused variables.
ChangeLog, inode.c:
inode.c (get_next_blockgroup): Fix bug where if get_next_blockgroup()
is called early because of a missing inode table in a block group, the
current_inode counter wasn't incremented correctly.
ChangeLog, tst_uuid.c:
tst_uuid.c (main): Fixed bogus declaration of the main's argv parameter.
ChangeLog, test_icount.c:
test_icount.c (main): Fix main() declaration so that it returns int,
not void.
Many files:
fsck.c (ignore): Remove unused variable cp.
chattr.c (fatal_error):
tune2fs.c (usage):
lsattr.c (usage):
dumpe2fs.c (usage):
badblocks.c (usage): Remove volatile from declaration.
fsck.c: Change use of strdup to be string_copy, since we don't trust
what glibc is doing with strdup. (Whatever it is, it isn't pretty.)
configure.in: Change how the installation directions are selected.
Previously, we had prefix and usr_prefix, where prefix was '' and
usr_prefix was /usr, and we then defined bindir, ubindir, libdir,
ulibdir, etc. in terms of that. In autoconf 2.12, it's possible to
override bindir, libdir, etc., and so in order to make our
installation directory makefile variables more in line with autoconf
2.12, I've changed all of the various makefiles to use prefix and
root_prefix, where the default Linux definitions are /usr and '',
respectively. What used to be bindir is now root_bindir, and what
used to be ubindir, is now bindir.
MCONFIG.in: Change directories to match with new installation
directory convention (see above). Add Makefile
dependencies for makefile fragments, and define
DEP_LIB_MAKEFILES which library makefiles can use to
define DEP_MAKEFILES, so that the library makefiles will
get regenerated when the makefile fragments change.
Remove the cat?dir variables, since we aren't creating
those directories any more.
Makefile.in: Add top-level uninstall targets.
e2fsprogs-1.12.spec: Add to the RPM package the e2label man page, and
to reflect that fact that we now compile_et and mk_cmds for the
development package.
ChangeLog, Makefile.in:
Makefile.in: Add uninstall target (which is a just a no-op).
version.h, RELEASE-NOTES:
Update to interim version numbers for release purposes.
unix.c: Fix bug in check of feature set, to make sure we can really
fix this filesystem.
problem.h: Make blkcount type to be of type blkcnt_t. Make the num
field be a 64 bit type. Add the problem code PR_1_FEATURE_LARGE_FILES
problem.c: Add table entry for the problem code PR_1_FEATURE_LARGE_FILES.
pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only a problem
for directory inodes. (Since it is also i_size_high now.) If there
are no large_files, then clear the LARGE_FLAG feature flag. If there
are large_files, but the LARGE_FLAG feature flag is not set, complain
and offer to fix it.
(check_blocks): Add support to deal with non-directory inodes that
have i_size_high set (i.e., large_files). Don't give an error if a
directory has preallocated blocks, to support the DIR_PREALLOC
feature.
(process_block, process_bad_block): The blockcnt variable is a type of
blkcnt_t, for conversion to the new block_iterate2.
pass2.c (process_bad_inode): A non-zero i_dir_acl field is only a
problem for directory inodes. (Since it is also i_size_high now.)
message.c (expand_inode_expression): Print a 64-bits of the inode size
for non-directory inodes. (Directory inodes can only use a 32-bit
directory acl size, since i_size_high is shared with i_dir_acl.) Add
sanity check so that trying to print out the directory acl on a
non-directory inode will print zero. (expand_percent_expression): %B
and %N, which print pctx->blkcount and pctx->num, can now be 64 bit
variables. Print them using the "%lld" format if EXT2_NO_64_TYPE is
not defined.
e2fsck.h: Add the large_flagsfield to the e2fsck context.
e2fsck.c (e2fsck_reset_context): Clear the large_flags field.
ChangeLog, expect.1:
f_messy_inode: Modify test to deal with changes to support 64-bit size
files. (/MAKEDEV had i_dir_acl, now i_size_high, set.)
Set the immutable flag on the block and character device so that
e2fsck notices them as bad devices, and offers to fix them. E2fsck
currently only checks devices with the immutable flag set, since
otherwise there might be some false positives --- the kernel doesn't
always clear the all of i_blocks[n], n>=4, due to a race condition.
ChangeLog, inode.c:
inode.c (ext2fs_get_next_inode): Always do the check to see if the
inode table is missing so that we catch the case where the first block
group is missing.
Update version.h for interim release
ChangeLog, Makefile.in, test_icount.c:
Makefile.in (PROGS): Remove test_rel from the test programs that we
build for now.
test_icount.c: Fix some random lint warnings.
Makefile.in:
Fix typo in removing brel_ma.o and irel_ma.o from the Makefile
alloc.c (ext2fs_alloc_block): New function which allocates a
block and updates the filesystem accounting records
appropriately.
ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY,
EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL, EXT2_INODE_ALLOC_FAIL,
EXT2_NOT_DIRECTORY
Change various library files to use these functions instead of EINVAL,
ENOENT, etc.
ChangeLog, pass1.c, pass3.c:
pass3.c (get_lost_and_found): Check error return of
EXT2_FILE_NOT_FOUND instead of ENOTDIR
pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY instead of
ENOTDIR
expect.icount:
Change expected error string to be "Invalid argument passed to ext2 library"
instead of just "Invalid argument"
pass*.c, super.c: Massive changes to avoid using printf and com_err
routines. All diagnostic messages are now routed through the
fix_problem interface.
pass2.c (check_dir_block): Check for duplicate '.' and '..' entries.
problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
PR_2_DUP_DOT_DOT.
problem.c: Added new problem codes for some of the superblock
corruption checks, and for the pass header messages. ("Pass
1: xxxxx")
util.c (print_resource_track): Now takes a description argument.
super.c, unix.c, e2fsck.c: New files to separate out the
operating-specific operations out from e2fsck.c. e2fsck.c now
contains the global e2fsck context management routines, and
super.c contains the "pass 0" initial validation of the
superblock and global block group descriptors.
pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
(nearly) all global variables and moved them to the e2fsck
context structure.
problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS, PR_0_BLOCKS_PER_GROUP,
PR_0_FIRST_DATA_BLOCK
expect.1, expect.2:
Updated tests to align with e2fsck problem.c changes.
io.h: Change the prototype of ext2fs_llseek() to use int's instead of
unsigned int's.
llseek.c: Change to allow PIC and !HAVE_LLSEEK. Add a prototype to
make life easer for GNU Libc 2.
rw_bitmaps.c: On the PowerPC, the big-endian variant of the ext2
filesystem has its bitmaps stored as 32-bit words with bit 0 as the
LSB of each word. Thus a bitmap with only bit 0 set would be, as a
string of bytes, 00 00 00 01 00 ... To cope with this, we
byte-reverse each word of a bitmap if we have a big-endian filesystem,
that is, if we are *not* byte-swapping other word-sized numbers.
ChangeLog, expect.1, image.gz:
f_badinode: Modify test to check for "bad" character and block devices
(i.e., ones which contain garbage block entries)