filesystems explicitly specified on the command line were
not being checked in parallel, due to a logic bug
introduced in to support the FSCK_MAX_INST environment
variable.
-R option which skips the root filesystem will skip all of
them. (Addresses Debian bug #159423). Note! This is not
a precedent for dealing intelligently with any other kind
of doubled entry in /etc/fstab!
line, default to -As. (Addresses Debian Bug #153102)
badblocks.8.in: Clarify why it's bad to do a non-destructive
test on a r/o mounted filesystem. (Addresses Debian Bug
#131350)
make sure we gracefully clean up and only exit at safe points.
For fsck, we pass the SIGINT/SIGTERM signal to the child processes,
so they can do their own cleanup.
function in get_device_by_label.c to allow the use of
UUID= or LABEL= when creating filesystems which use external
journal dev (e.g. mke2fs -J device=LABEL=<journal_label>).
tune2fs.c: Use superblock s_journal_uuid to locate an external
journal device instead of s_journal_dev when removing it.
Allow opening journal devices to set the label and UUID
in the ext2 superblock.
mke2fs.c, tune2fs.c: Free journal_device after use, as it is
malloc'd in interpret spec.
of the filesystem to determines its type.
fsck.c (fsck_device, ignore, interpret_type): Call identify_fs
if the type specified in /etc/fstab is "auto".
fsck.8.in, fsck.c (compile_fs_type, fs_type, ignore): Fix handling of
-t option to be more intuitive. Also add support for the Mandrake -t
loop hack. See man page for description of new -t semantics.
fsck.c (PRS): fsck -? now prints the usage message.
ChangeLog, jfs.h:
jfs.h (JFS_DEBUG): Don't define JFS_DEBUG for non-kernel builds; if
necessasry it can be set with configure --enable-jfs-debug
fsck.c (device_already_active): If we're not able to determine the
base device, we should assume that the device is already active in
order to force serialization.
get_device_by_label.h (get_volume_label_by_spec): Add function prototype.
get_device_by_label.c: Use string_copy() instead of strdup() for
portability's sake. Fix a few other gcc -Wall complaints.
fsck.h, fsck.c (string_copy): Export string_copy() extern.
badblocks.c: Fix various gcc -Wall complaints, including an incorrect
reference to sync in flush_bufs().
ChangeLog, configure, configure.in:
configure.in: Add checks for the header files sys/mkdev.h and
sys/sysmacros.h.
fsck.c (check_all): Call interpet_device to resolve LABEL= and UUID=
right away so that the device_already_active() logic can do the right
thing. Also cleaned up the the root filesystem logic checking code;
fixed up a logic bug with the parallel_root option.
base_device.c (base_device): Add support for DAC960 device names.
fsck.c (device_already_active): Handle the case where base_device
doesn't know how to interpret the device name, instead of core
dumping.
fsck.c (device_already_active): Change to use new version of
base_device() which now returns dynamically allocated memory.
base_device.c (base_device): New version moved from fsck.c which now
understands ugly devfs names. (Debian bug #65181)
base_device.tst: Test case for base_device.c
fsck.c (wait_one): When we let a new fsck take control of the console
to display the progress bar, set FLAG_PROGRESS to so that fsck knows
not to start new processes during an fsck pass with the progress
bar. (Should fix debian bug #65267)
llseek.c: Add #ifdef's for IA64 (it's a 64-bit platform, so we don't
need to use llseek).
ChangeLog, fsck.c:
fsck.c (device_already_active): Add a special case check for MD
devices, so we don't try to check them in parallel with other devices.
fsck.c (execute, wait_one): Treat fsck.ext3 the same as fsck.ext2
(because they are the same) for the purposes of the progress bar
display logic.
ChangeLog, ls.c:
ls.c (list_super): Display the journal information fields in the
superblock if the filesystem has a journal.
fsck.c (lookup, load_fs_info, check_all): Use lazy evaluation for
calling interpret_device(), since this requires root privileges if the
partitions need to be scanned. Otherwise, it's not possible to do
non-proot fsck's for removeable devices such as floppies if there are
any LABEL= or UUID= entries in /etc/fstab.
fsck.c (interpret_device): If there was an attempt to interpret a
device specification of the type "UUID=" or "LABEL=", and it fails,
check to see if /proc/partitions is readable. If not, print a warning
message about /proc perhaps not being mounted, and exit.
mke2fs.c (check_plausibility): Remove unneeded #include of linux/fs.h.
Add #define of MAJOR if necessary.
partinfo.c: Remove unneeded #include of linux/fs.h
Really fix the bug where "fsck -As" will actually allow interactive
fsck's. (For those people who like to do interactive fsck's in the
/etc/rc scripts!?!)
fsck.c (PRS, device_already_active): Add debugging hook; if the
environment variable FSCK_FORCE_ALL_PARALLEL is set, then force all
fsck runs to happen in parallel.
fsck.c (wait_one): Fix gcc warnings; add #include for ctype.h, add
const to char * variables, and use NOARGS to declare functions that
take no arguments. Also fix a memory leak in execute() where we
weren't freeing argv[] after forking the child process.
fsck.c (execute): Fix really stupid bug in the linked list management
which caused fsck in parallel mode to go into an infinite loop.
ChangeLog, mke2fs.c:
mke2fs.c (show_stats): Capitalized Hurd to make the GNU types happy.
ChangeLog, configure.in:
configure.in: Capitalized Hurd to make the GNU folks happy.
fsck.c (wait_one): If the fsck process just started, wait a second
before sending a SIGUSR1, to give it a chance to set the signal
handler; otherwise, fsck will die on an unhandled SIGUSR1.
* mke2fs.c (PRS, set_fs_defaults): Add new option -T which allows the
user to specify the how the filesystem is to be used. Mke2fs now
chooses the filesystem parameters automatically based on the size of
the filesystem and the intended use of the filesystem. Add new option
-n which simply goes through the calculations to determine the
parameters of the filesystem the system would make.
* fsck.c, fsck.h: Add support for new option -C. This option will
automatically manage e2fsck processes so that they will print
completion/progress bars. If multiple filesystems are being checked,
arrange to make sure that only one e2fsck process is displaying a
progress bar at a time.
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.
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.
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.
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.
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.)