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!?!)
Makefile.in (distclean): Remove TAGS and Makefile.in.old from the
source directory. Also, when making the .exclude file for the
source_tar_file, exclude those two files as well.
Makefile.in (distclean): Remove TAGS and Makefile.in.old from the
source directory.
problem.c (fix_problem): Support a new flag, PR_PREEN_NO which means
the answer is assumed to be no in preen mode. This is now used in the
PR_1_SET_IMMUTABLE code, so that in preen mode we ignore these inodes
and just print a warning message.
pass1.c (e2fsck_pass1): If the filesystem does not support imagic
inodes, if an inode has the imagic flag set, offer to clear the imagic
flag. If a valid device/fifo/socket has the immutable flag set, call
the new helper function check_immutable() to offerto clear the
immutable flag.
pass2.c (check_filetype): Use the new ext2_file_type() helper function
instead of calculating the file_type information manually.
pass3.c (e2fsck_reconnect_file): When adding a link to lost+found,
calculate the filetype information so that ext2fs_link() can use the
information if applicable. (get_lost_and_found): Create the
/lost+found directory with the correct filetype information if
applicable.
util.c (ext2_file_type), e2fsck.h: New function which returns the
directory entry file type information given the inode's mode bits.
problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC and
PR_1_SET_IMMUTABLE.
ChangeLog, mke2fs.8.in:
mke2fs.8.in: Update manual page so that the sparse_option filesystem
option is properly named.
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.
Makefile.in (tst_badblocks): Add freefs.o to the object list, since
ext2fs_badblocks_list_free was moved to freefs.c.
tst_badblocks.c: Use the newer badblocks API names. Add duplicate
blocks to the test inputs to test dealing with adding blocks which are
already in the badblocks list.
badblocks.c (ext2fs_badblocks_list_add): If appending to the end of
the list, use a shortcut O(1) operations instead of an O(n) operation.
(Idea suggested by David Beattie.)
freefs.c (ext2fs_free): Use ext2fs_badblocks_list_free() instead of
badblocks_list_free(), to save a procedure call.
icheck.c (do_icheck):
ncheck.c (do_ncheck): If ext2fs_open_inode_scan() returns
EXT2_ET_BAD_BLOCK_IN_INODE_TABLE loop to skip over the bad blocks in
the inode table.
pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it, to
prevent it from getting freed twice.
unix.c (main): Close the filesystem before freeing the context, so
that in the event of a free()-related segmentation violation, the
filesystem is properly closed and written out.
e2fsck.c (e2fsck_reset_context): When freeing ctx->inode_reg_map, we
weren't zero'ing ctx->inode_reg_map, which could cause a segfault
later on in the e2fsck run.
problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
matches the standard convention).
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.
get_device_by_label.c (has_right_label): Fixed bug where code used a
strncmp to compare a binary UUID value which may contain a NULL.
Fixed GCC warnings; added const to char * typed variables. Eliminated
non-portable use of u_char.
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.
feature.c: Fix GCC warnings; add const to the char * types in the
function prototypes for e2p_feature2string and e2p_edit_feature.
ChangeLog, uuid.h, uuid_time.c:
uuid_time.c (variant_string): Declare to be static to avoid gcc warnings.
uuid.h: Add function prototypes for uuid_generate_random() and
uuid_generate_time().
ChangeLog, chattr.c:
chattr.c: Add hack to compile in a definition for S_ISLNK so we can
successfully compile even with warnings turned on.
debugfs.h: Add declaration for do_features()
debugfs.c: Add #incldue of e2p.h to fix gcc warnings.
ChangeLog, message.c:
message.c (safe_print): Make safe_print take an char instead of an
unsigned char to fix gcc warnings.
configure.in: Move the code that checks for the presence of Linux
header files, to earlier in the config file, since it adds a directory
to the include path, and that needs to happen before any compile tests
are run.
gen_uuid_nt.c (uuid_generate): W2K strikes again! An incompatible
interface change means we need to detect whether the code is running
on an NT4 or NT5 system.
config.h, ChangeLog:
config.h: Add #define's for strcasecmp and strncasecmp
nt_io.c (_OpenNtName): Open the device using
FILE_SYNCHRONOUS_IO_NONALERT instead of FILE_SYNCHRONOUS_IO_ALERT
(nt_open): At the end of the device open routine, unlock the drive but
do not dismount it.
mke2fs.c (PRS): Use __u64 instead of long long for portability
reasons.
Moved #include of sys/stat.h inside #ifdef HAVE_LINUX_MAJOR_H for
portability reasons.
ChangeLog, util.c:
util.c: For NT portability, don't redefine getchar(), since stdio
defines that. Instead we introduce a new abstract macro read_a_char()
which is #defined to the right function as necessary.
ext2_fs.h (i_reserved2): Use __GNU__ instead of __hurd__ to detect the
Hurd OS. To protect against future irrationality on the part of the
FSF concerning whether Linux is GNU or not, on a system which defines
both __linux__ and __GNU___, __linux__ takes precedence.
ChangeLog, initialize.c:
initialize.c (CREATOR_OS): Use __GNU__ instead of __gnu__ to detect
the Hurd OS.
ChangeLog, debugfs.c:
debugfs.c (do_dirty_filesys): Make the "dirty" command clear the valid
bit on the superblock. (And with a -clean option to set the valid
bit.) Originally it was used just to set the "needs to be written"
bit in the in-core version of the fs structure.
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.
problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
pass2.c (check_dir_block): Require that the length of the directory
entry be at least 12 bytes. Check to see if the filename is
zero-length, and flag that as an error.
Update to pass new required parameter to e2p_edit_features
mke2fs.8.in:
Update man page to add explanatory note about how the default block
size is determined.
tune2fs.c (main): Add a new option -O which allows the user to set and
clear certain "safe" filsystem feature flags. Currently, the only
ones which are supported for modification are sparse_superblock and
filetype.
mke2fs.c (PRS): Add new option -O which allows the user to request
filesystems with specific filesystem options. By default on 2.2 and
later systems, create filesystems that have both file type information
and sparse superblocks.
feature.c (e2p_edit_feature), e2p.h: Add a new argument which allows
the calling application to limit what features the user is allowed to
set or clear using this function. Also add support for comma
separated lists.
mkdir.c (ext2fs_mkdir): Pass EXT2_FT_DIR flag to ext2fs_link().
link.c (ext2fs_link): This call now uses the low three bits of the
flags parameter to pass the directory filetype information; it will
set the directory entry FILETYPE information if the filesystem
supports it.
newdir.c (ext2fs_new_dir_block): If the FILETYPE superblock option is
set, then create the '.' and '..' entries with the filetype set to
EXT2_FT_DIR.