fsck.c: Added support for LABEL= and UUID= specifications for the
filesystem's device, to match what recent mount programs can support.
Also, close stdin when doing fsck -A or when checking more than one
filesystem at a time, so that e2fsck doesn't try to ask interactive
questions if the filesystem appears to be mounted.
get_device_by_label.c: New file added to support LABEL=foo and
UUID=bar type specifications.
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).
dumpe2fs.c, dumpe2fs.8.in: Added 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.
* gen_uuid.c (get_random_bytes): Use a while loop when reading from
/dev/urandom so that if we get interrupted while reading the right
thing happens.
(uuid_generate_random): Add new function which uses the new UUID
format which uses 122 random bits to form the 128-bit UUID.
(uuid_generate): Rename the old uuid_generate to be
uuid_generate_time, and create a new uuid_generate function which
calls either uuid_generate_random or uuid_genereate_time depending on
whether /dev/urandom is present.
uuid_generate.3.in: Update to reflect changesin uuid_generate and its
two new variants.
tst_uuid.c: Updated to test new uuid_generate functions, and to
reflect new semantics of uuid_compare. Added tests to make sure the
UUID type and variant created by UUID generate is correct.
uuid_time.c (uuid_variant, uuid_type): Added new functions to return
the UUID variant and type information. The debugging program now
prints the UUID variant and type, and warns if the unparsed time
information is likely to be incorrect.
uuid_parse.3.in, libuuid.3.in: Miscellaneous text cleanups.
uuidgen.1.in:
Miscellaneous text cleanups.
uuidgen.c, uuidgen.1.in: Created command-line utility to generate
UUIDs.
fsck.c (fsck_device, execute): Don't dereference a null pointer when
checking a filesystem not in /etc/fstab.
fsck.c (fsck_device): Print an error message if the user passes in a
device or directory name which isn't found in /etc/fstab. Allow the
location of /etc/fstab to be overridden by the FSTAB_FILE environment
variable.
mke2fs.c (write_inode_tables): Add kludge code so that when the
MKE2FS_SYNC environment variable is set, mke2fs will sync every
MKE2FS_SYNC block groups, while it is writing out the inode tables.
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.
fsck.c (execute, wait_one): Modified routines so that they accurately
create an fsck_instance even when the noexecute flag is set. This
allows for accurate debugging of the fsck pass structure.
(check_all): When the verbose flag is given twice, print debugging
information about when fsck is waiting for jobs to finish.
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.
inode.c (ext2fs_read_inode, ext2fs_write_inode): Check to see if the
inode number is zero; if it's zero, return EXT2_ET_BAD_INODE_NUM.
ChangeLog, fsck.c:
fsck.c (load_fs_info): If the pass number field is missing, it needs
to be treated as zero.
libext2fs.texinfo, README:
Update for 1.14 release.
chattr.c, lsattr.c: Only print the version information for the program
if the -V option is given.
chattr.c: Ignore symbolic links when doing a recursive descent through
a directory.
mke2fs.c: Add definition of SCSI_BLK_MAJOR if not defined, for
compatibility with Linux 1.2.13 header files.
ChangeLog, fsck.c:
fsck.c (load_fs_info, parse_fstab_line): Ignore fstab lines are
commented out. Also allow blank lines in the /etc/fstab file.
(execute): In verbose mode, print the mountpount of the filesystem
which we are checking (user request).
pass3.c (get_lost_and_found): If the filesystem is not opened
read-only, then force /lost+found to be created if it is not present.
problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen operation.
ChangeLog, Makefile.in:
Makefile.in: Updated dependencies.
ChangeLog, fsck.c:
fsck.c (load_fs_info): Parse /etc/fstab ourselves, instead of relying
on getmntent(). This has the advantage of allowing us to properly
handle missing pass numbers correctly.
ChangeLog, configure.in:
configure.in: Add paths.h to header files for which we search.
tune2fs.8.in: Fix minor display bug in the nroff.
mke2fs.c (show_stats, write_inode_tables): Use the log10 function to
calculate the display of block numbers so that things look nice on an
80 character display.
mke2fs.c (usage): Add the sparse-super-flag to the usage message.
ChangeLog, e2fsck.c, pass1.c, pass2.c, problem.c, problem.h, unix.c:
unix.c (main): Move ext2fs_close() after e2fsck_free_context() since
e2fsck_free_context may reference data in ctx->fs.
e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL before
checking ctx->fs->dblist.
pass1.c (e2fsck_pass1): Use the device check subroutine on FIFO's and
Socket's, so that we catch bogus immutable inodes.
pass2.c (process_bad_inode): Process bad socket and fifo's.
problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
PR_2_BAD_SOCKET.
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.)
Change to use new installation directory variables convention. Fix
uninstall rules to take $(DESTDIR) into account. Remove cat8dir and
cat1dir from the installdirs target, since modern man package don't
necessarily put the cat directory in /usr/man/cat?.
Makefile.in: Change to use new installation directory variables
convention. Fix uninstall rules to take $(DESTDIR) into account.
Remove cat8dir from the installdirs target, since modern man package
don't necessarily put the cat directory in /usr/man/cat?.
Change to use new installation directory variables convention. Fix
installdirs and uninstall rules to reflect the fact that debugfs has
been installed in the root filesystem. Fix uninstall rules to take
$(DESTDIR) into account.
e2label.c: Fix -Wall warning by making functions static.
chattr.1.in: Document that the append-only attribute may only be set
or cleared by the superuser.
Update all manual pages to that the availability section is
up-to-date.
e2label.8.in, tune2fs.8.in: Update manual page to state that labels
must be no longer than 16 characters, or they will be truncated.
e2label.c (change_label), tune2fs.c (main): If the label is longer
than 16 characters, print a warning message stating that the label
will be truncated.
mke2fs.c (PRS): If the user specifies a filesystem size, and it's
larger than the apparent size of the device, print a warning message
and ask if the user wants to proceed.
badblocks.8: Update documentation to note that output format of
badblocks is suitable for use with e2fsck -l or mke2fs -l.
mke2fs.c (handle_bad_blocks): Fix bug so that all groups with bad
superblock backup blocks are printed (not just the first one).
resize2fs.h: If EXT2_FLAT_INCLUDES is defined, then assume all
of the ext2-specific header files are in a flat directory.
ext2_block_move.c, ext2_inode_move.c, extent.c, resize2fs.c,
resize2fs.h: Rename variables named "new" to "new_block",
"new_inode", or "new_loc" to avoid C++ reserved word
clash.
ext2_block_move.c, ext2_inode_move.c, extent.c, resize2fs.c,
sim_progress.c: Use ext2fs_get_memory(),
ext2fs_free_memory(), et. al., instead of malloc() and
free().
ext2_block_move.c, ext2_inode_move.c, extent.c: Explicitly cast
all assignments from void * to be compatible with C++.
banalysis.c, banalysis.h, ext2_inode_move.c, ext2_block_move.c:
Change private to priv_data to avoid C++ namespace clash.
ChangeLog, badblocks.8.in:
badblocks.8.in: Add documentation for the -s option.
resize2fs.c, ext2_block_move.c ext2_inode_move.c: Only include printf
statements if RESIZE2FS_DEBUG is defined.
main.c: Don't read in the bitmaps since resize2fs.c does that.
e2label.c, mke2fs.c:
Adjust header files.
fsck.c:
chattr.c: Remove #include of getopt.h, since it's not needed.
tune2fs.c (main):
lsattr.c (main):
badblocks.c (main):
dumpe2fs.c (main):
mke2fs.c (PRS): Make the variable which getopt returns into be
an int, so that it won't lose on platforms where char is
unsigned.
ChangeLog, unix.c:
Make the variable which getopt returns into be an int, so that it
won't lose on platforms where char is unsigned.
llseek.c (ext2fs_llseek): Fix type error for ext2fs_llseek()
icount.c (ext2fs_icount_validate):
bmove.c (process_block): Fix lint error in type for fprintf().
inode.c (ext2fs_check_directory): Add support for the callback
to return the error code EXT2_ET_CALLBACK_NOTHANDLED.
ChangeLog, mke2fs.c:
Make parse_raid_opts return a void, to fix a -Wall warning.
Declare main() to return an int, as required. Make sure main() always
ends with an exit(0). (Some programs weren't doing this, and thus
were returning a random exit value.)
Pass the blocksize to the bad blocks command so that all of the
filesystem gets tested in the case where the blocksize 2048 or 4096.
ChangeLog, badblocks.c:
Fix bug where ext2fs_badblocks_list_test would test the list (and
exceed array boundaries) if there were no bad blocks on the bad blocks
list. (Showed up when user tried: mke2fs -c -b 4096).