ext2fs.h, mkjournal.c (ext2fs_add_journal_fs,
ext2fs_add_journal_device): Add a new argument to the APIs of these
function, which is a flags word. This is used to allow the creation
of a V1 superblock for those folks who are using ext3 0.3b in
production. Note, the user-land interface for getting at this flag
won't be documented, as the V1 superblock is deprecated.
mkjournal.c (init_journal_superblock): Sync Stephen's changes which
creates a V2 superblock instead of a V1 superblock.
ChangeLog, jfs.h, jfs_compat.h, list.h:
jfs.h, jfs_compat.h, list.h: New files added to support ext3.
imager.c (ext2fs_image_{inode,super,bitmap}_{read,write}, ext2_fs.h,
Makefile.in: New file that has routines that save ext2fs metadata to a
file.
ext2_err.et.in (EXT2_ET_MAGIC_E2IMAGE): New error code assigned.
e2image.h: New file which defines the file format for the ext2 image
file. (Saved copy of ext2 metadata to a file as a saving throw
against worst-case damage.)
ChangeLog, Makefile.in, e2image.c:
e2image.c, Makefile.in: New program which saves ext2 metadata to a
file for people who need a last-ditch saving throw.
inode.c (ext2fs_flush_icache): Add new function ext2fs_flush_icache()
which flushes the internal inode cache. Applications which modify the
inode table blocks directly must call this function.
ext2_io.h (io_channel_write_byte): Add new interface to allow callers
to write specific byte ranges. This is an optional interface, which
not all IO channels may implement.
unix_io.c (unix_write_byte): test_io.c (test_write_byte): Add
implementation of the write_byte function.
closefs.c (write_primary_superblock, ext2fs_flush): Add a new function
which writes the primary superblock. If the IO channel supports
writing raw bytes directly, only fields which were modified are
written to the disk. This makes it safe(r) to use utilities like
tune2fs on a mounted filesystem.
freefs.c (ext2fs_free): Free the original superblock if it is available.
openfs.c (ext2fs_open): Store a copy of the original superblock when
opening it.
ext2fs.h: Add a field to store the original superblock in the ext2
context structure.
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.
finddev.c, ext2fs.h, Makefile.in: Add new file, finddev.c, which
provides the function ext2fs_find_block_device(). This function
returns the pathname to a block device, given its device number.
Commit this file for future use; contains a configure.in script for when
libuuid gets separtead out into its own package.
libext2fs.texinfo:
Update version numbers for 1.19 release.
TODO:
Commit TODO list for 1.19 release.
README:
Update file for 1.19 release.
ChangeLog, e2fsprogs.spec:
e2fsprogs.spec: Merge in a few changes from the Red Hat 6.2 spec file,
now that we're using a modern rpm to build e2fsprogs. Also updated
version number to 1.19.
version.h:
Update version number for 1.19 release.
ChangeLog:
Check in changes for 1.19 release.
ext2fs.h (EXT2_LIB_FEATURE_INCOMPAT_SUPP): Add
EXT3_FEATURE_INCOMPAT_RECOVER (aka needs_recovery) to the list of
filesystem flags supported by the library.
ChangeLog, e2fsprogs.spec:
e2fsprogs.spec (%post): Remove resize2fs from its old location in
/usr/sbin in the postinstall script.
RELEASE-NOTES, version.h:
Update for WIP release.
ext2fs.h: Update to include latest journalling additions to the superblock.
.del-ext2_fs.h~7a460879, ChangeLog:
ext2_fs.h: Update to include latest journalling additions to the
superblock.
tst_badblocks.c: Update test program to test ext2fs_read_bb_FILE2 and
ext2fs_write_FILE.
write_bb_file.c (ext2fs_write_bb_FILE): New function which writes out
bad blocks list to a file.
read_bb_file.c (ext2fs_read_bb_FILE2): Add new function which changes
the callback function to take two additional arguments; a private
blind pointer supplied by the caller, and pointer to a char *
containing a pointer to the invalid string.
badblocks.c (ext2fs_badblocks_equal): Add new function which returns
true if two badblocks list are equal.
Makefile.in: Remove explicit link of -lc in the shared library. (It
shouldn't be necessary, and is harmful in some cases).
jump.funcs:
dll/jump.funcs: Add new jumptable entries for ext2fs_write_bb_FILE,
ext2fs_read_bb_FILE2, and ext2fs_badblocks_equal.
debugfs.8.in: Documented new behaviour.
ls.c (ls_l_file): Fix Y2K bug -- was printing 22-May-100 for recent
files. Switched to 4-digit years.
dump.c, debug_cmds.ct (do_rdump): Add new debugfs command "rdump",
which recursively dumps a directory and its contents.
(fix_perms): New function. Break permission-fixing code out of
dump_file() so it can be called by rdump code as well.
(dump_file): Call fix_perms().
debugfs.c, debug_cmds.ct (do_lcd): Add new debugfs command "lcd",
which changes the cwd on the native filesystem.
debugfs.c (open_filesystem): Extra args for superblock, blocksize, and
catastrophic mode. Changed callers.
(do_open_filesys, main): Accept new -b, -s, -c options for
open_filesystem.
ChangeLog, mkdir.c:
mkdir.c (ext2fs_mkdir): Read the parent directory's inode earlier, so
that if there's an error reading it, we can more cleanly back out of
the operation.
version.h:
Update version file for WIP release.
getsize.c: Under linux, manually define the ioctl for BLKGETSIZE if it
isn't already defined and it's safe to do so.
.cvsignore:
Ignore build files when builddir==srcdir
getsize.c (ext2fs_get_device_size): Use open64() instead of open() if
it exists.
unix_io.c (unix_open): Use open64() instead of open() if it exists.
llseek.c: Simplify header includes of unistd.h. If lseek64 is
available (and prototypes are defined) use it in preference to llseek.
gen_uuid.c (get_random_bytes): Make more paranoid about misbehaving
/dev/urandom. If we get a return of zero without an error more than 8
times in a row, we break out and return an error. Also, if
/dev/urandom doesn't exist, try /dev/random.
ChangeLog, ext2fs.h:
ext2fs.h: Use AUTOCONF SIZEOF_* macros if available to determine how
to define __s64 and __u64. Turn off "compression is experimental"
warning if the cpp macro I_KNOW_THAT_COMPRESSION_IS_EXPERIMENTAL is
defined.
ext2fs.h: Define EXT2FS_COMPRESSED_BLKADDR and HOLE_BLKADDR.
Conditionally include Compression as a supported type if
ENABLE_COMPRESSION (via --enable-compression) is turned on.
bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap,
ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
ext2fs_mark_inode_bitmap, ext2fs_unmark_inode_bitmap): Change to
return the previous state of the bit that is being marked or unmarked.
For speed optimization.
ChangeLog, pass3.c:
pass3.c (check_directory): Only do the loop detection algorithm if
we've searched over 2048 parent directories and haven't found the end
yet. This means that in the common case, we don't allocate or clear
the inode_loop_detection bitmap, which for large systems, merely
clearing the bitmap for each directory was turning out to be quite
expensive. Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
identifying this problem.
ChangeLog, Makefile.in, e2fsck.h, unix.c:
Makefile.in: Call sync after finishing building all in this directory.
unix.c (PRS): sync the filesystem before trying to use BLKFLSBUF, to
minimize the chance of causing dirty blocks to get dropped.
e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on a
Linux/i386 system.
debugfs.c (dump_inode): Remove #ifdef for i_version vs. i_generation
since we know it will always be i_generation now.
ChangeLog, e2fsck.h, flushb.c, scantest.c:
e2fsck.h, flushb.c, scantest.c: Remove uneeded include of linux/fs.h
bmap.c:
Fix silly spelling typo.
ChangeLog, getsize.c, ismounted.c, swapfs.c:
getsize.c, ismounted.c: Remove unneeded include of linux/fs.h
swapfs.c: Remove #ifdef HAVE_EXT2_INODE_VERSION since it's not needed
any more; we know it will always be i_generation. Add support for
swapping the high bits of the uid and gid.
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.
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.
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.
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.
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.
pass4.c (e2fsck_pass4): If an inode is set in the inode_imagic_map
bitmap, don't check to see if it is disconnected from the inode tree
(because it almost certainly will be). Free inode_imagic_map at the
end of pass 4.
pass2.c (check_dir_block, check_filetype): If the FILETYPE feature is
set, check the directory entry's filetype information field, and
fix/set it if necessary. (e2fsck_pass2): Free the inode_reg_map
bitmap at the end of pass 2.
pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
information for inode_reg_map and inode_imagic_map, which indicates
which inodes are regular files and AFS inodes, respectively.
Since only the master superblock is written during a restart, force
that superblock to be used after a restart; otherwise changes to the
block group descriptors end up getting ignored.
problem.c, problemP.h: If e2fsck is run -n, make def_yn variable be 0
for "no". Add support for a new flag, PR_NO_NOMSG, which supresses
the problem message if e2fsck is run with the -n option.
problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add new
problem codes.
message.c (expand_dirent_expression): Add support for %dt which prints
the dirent type information.
e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map and
inode_imagic_map).
e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map to the
context structure.
ChangeLog, nt_io.c:
nt_io.c: New file which supports I/O under Windows NT.
ChangeLog, gen_uuid_nt.c:
gen_uuid_nt.c: New file which creates a UUID under Windows NT.
Many files:
Add support for non-Unix compiles
ext2fs.h: Add new fields for journalling and define new feature bits
used by newer filesystems: IMAGIC_INODES, HAS_JOURNAL, RECOVER.
expanddir.c (ext2fs_expand_dir, expand_dir_proc): Change where we
update the inode block count and size files so that the block count
field is updated correctly when we create an indirect block.
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).
dir_iterate.c (ext2fs_process_dir_block): Check for corrupted
directory entry before calling the callback function. This should
prevent some core dumps of insufficiently paranoid callback functions.
ChangeLog, unix.c:
unix.c (main): Add missing space in the disk write-protected message.
fileio.c (ext2fs_file_open): Remove obsolete comment stating that we
don't handle writing yet (we do). Fixed bug where we weren't
allocating a big enough buffer for ext2_bmap.
ChangeLog, ext2fs.h:
ext2fs.h: Add feature definition for AFS IMAGIC inodes.
ChangeLog, MCONFIG.in, config.sub:
MCONFIG.in: Define man1dir, man3dir, and man8dir in terms of mandir.
config.sub: Update config.sub from autoconf 2.13 so that it will
recognize new machine types from the Alpha.
configure:
Update to match latest changes to configure.in
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.
unix.c (main): Reset the context before calling ext2fs_close(), to
avoid referencing already freed memory.
ChangeLog, llseek.c:
llseek.c (ext2fs_llseek): Change ext2fs_llseek() in the non-Linux case
to use EINVAL by default, unless it isn't defined, in which case we
use EXT2_ET_INVALID_ARGUMENT instead.
ChangeLog, mk_cmds.sh.in:
mk_cmds.sh.in: Fixed portability bug in shell script; we were
depending on a bash'ism.
ChangeLog, uuid.c:
uuid.c: Use asm/types.h instead of linux/types.h, to be consistent
with other locations where we've had to do this to work around glibc.