+2005-06-19 Theodore Ts'o <tytso@mit.edu>
+
+ * e2fsck.8.in: Make it clear that the -c, -l, and -L options are
+ never safe to use on a mounted filesystem, and in general,
+ running e2fsck on mounted filesystems is a bad idea.
+
+2005-06-16 Theodore Ts'o <tytso@mit.edu>
+
+ * message.c: Add @m (multiply-claimed) and @n (invalid)
+ expansions.
+
+ * problem.c: Clean up the problem messages displayed by e2fsck.
+
+2005-06-05 Theodore Ts'o <tytso@mit.edu>
+
+ * e2fsck.8.in: Add a request to the REPORTING BUGS section of the
+ man page to make sure that e2fsck's messages are printed
+ in English, and to send a raw e2image filesystem dump if
+ possible.
+
+2005-05-05 Theodore Ts'o <tytso@mit.edu>
+
+ * badblocks.c (check_bb_inode_blocks): Clean up warning printf.
+ Thanks to Benno Schulenberg for the patch. (Addresses
+ Sourceforge Bug: #1189803)
+
+2005-04-16 Theodore Ts'o <tytso@mit.edu>
+
+ * e2fsck.8.in: Fix spelling mistakes in man pages. (Addresses
+ Debian Bugs: #304593)
+
+2005-04-14 Theodore Ts'o <tytso@mit.edu>
+
+ * pass1b.c (pass1d): Don't offer to clone or delete the resize
+ inode; it's not allowed!
+
+ * e2fsck.c, e2fsck.h, journal.c, pass1.c, pass1b.c, pass2.c,
+ pass3.c, pass4.c, super.c, unix.c: Use a centrally stored
+ current time for "now" which can be overridden using the
+ E2FSCK_TIME environment variable, for better
+ reproducibility for regression tests.
+
+2005-04-06 Theodore Ts'o <tytso@mit.edu>
+
+ * pass1.c (e2fsck_pass1): If the superblock last mount time (not
+ just the last write time) looks insane, then assume that
+ we can't do the LOW_DTIME checks.
+
+2005-03-21 Theodore Ts'o <tytso@mit.edu>
+
+ * Release of E2fsprogs 1.37
+
+2005-03-21 Theodore Ts'o <tytso@mit.edu>
+
+ * message.c, pass1.c, problem.c, problem.h, util.c: Integrate code
+ from Alex Thomas at Clusterfs to check extended attributes
+ stored in inodes.
+
+ * message.c (expand_inode_expression): Add support for %IS in
+ problem descriptions. Note that this only works if the
+ problem context has a pointer to a large inode!
+
+ * problem.h, problem.c (PR_1_EXTRA_ISIZE, PR_1_ATTR_NAME_LEN,
+ PR_1_ATTR_VALUE_OFFSET, PR_1_ATTR_VALUE_BLOCK,
+ PR_1_ATTR_VALUE_SIZE, PR_1_ATTR_HASH): Add new problem
+ codes.
+
+ * util.c (e2fsck_write_inode_full): New function.
+
+ * pass1.c (check_ea_in_inode, check_inode_extra_space): New
+ function which tests the validity of extended attributes
+ stored in a large inode.
+ (e2fsck_pass1): Call ext2fs_get_next_inode_full() instead
+ of get_next_inode(), and use an allocated inode which is
+ big enough to store extra portion of large inodes.
+
+2005-03-20 Theodore Ts'o <tytso@mit.edu>
+
+ * super.c (check_super_block): Add sanity checks for the
+ superblock's inode_size field.
+
+ * pass3.c (check_root, e2fsck_get_lost_and_found): Call
+ ext2fs_write_new_inode() instead of ext2fs_write_inode().
+
+ * pass1.c (check_blocks): Move counting the extended attribute
+ block earlier so that we don't have to worry about
+ num_blocks wrapping for files which are too big.
+
+2006-02-05 Theodore Ts'o <tytso@mit.edu>
+
+ * Release of E2fsprogs 1.36
+
+2005-02-04 Theodore Ts'o <tytso@mit.edu>
+
+ * pass2.c (e2fsck_pass2), problem.c (PR_2_HTREE_FCLR), problem.h
+ (PR_2_HTREE_FCLR): Remove support for
+ --enable-clear-htree; this was only needed during the
+ early development of the htree patch.
+
+2005-01-28 Theodore Ts'o <tytso@mit.edu>
+
+ * pass2.c (e2fsck_process_bad_inode): Fix a corner case involving
+ big-endian systems, long symlinks and i_file_acl set when
+ it shouldn't be. Without this bugfix, f_clear_xattr will
+ fail on big-endian machines.
+
+ * super.c (check_resize_inode): Deal with the case where the
+ resize inode can't be read; don't try to recreate the
+ resize inode unless the resize feature is actually
+ enabled.
+
+2005-01-27 Theodore Ts'o <tytso@mit.edu>
+
+ * super.c (check_resize_inode): If the resize inode has a zero
+ i_links_count or isn't a regular file, consider the resize
+ inode as invalid, and offer to recreate it.
+
+ * pass2.c (e2fsck_process_bad_inode): Offer to clear i_file_acl
+ before checking to see if an invalid inode should be
+ removed, since otherwise the fast symlink detection code
+ can get confused. Also clear the inode's entry in
+ inode_bad_map if the inode has been completely fixed.
+ (Addresses Red Hat Bugzilla #146284)
+
+2005-01-25 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (main, check_if_skip): Set the valid flag earlier, and if
+ it is cleared by the superblock tests, then assume that
+ the filesystem contains errors and must be checked.
+
+ * super.c (check_super_block): Check the individual block group
+ inode and block free counts, as well as the filesystem
+ inode and block free counts. If any of the block/inode
+ free counts is too large, force a full filesystem check.
+ (Addresses Debian Bug: #291571)
+
+2005-01-19 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (e2fsck_simple_progress): Use fixed integer math
+ to check to see if we're at 0 or 100%
+ (is_on_batt): Clean up gcc -Wall warning
+ (main): Remove dead code
+
+2005-01-13 Matthias Andree <matthias.andree@gmx.de>
+
+ * unix.c: Do not call closedir if the handle is zero, to avoid
+ crashes when the /proc/acpi/ac_adapter directory is
+ missing, for instance on non-ACPI or non-Linux systems.
+
+2005-01-09 Theodore Ts'o <tytso@mit.edu>
+
+ * pass1b.c: As part of converting configure.in from using the
+ "broken by design" 2.13 version of AC_CHECK_TYPE to
+ AC_CHECK_TYPES, if intptr_t isn't defined, manually
+ typedef it to long. (Addresses Debian Bug #289133)
+
+2005-01-06 Theodore Ts'o <tytso@mit.edu>
+
+ * super.c (check_resize_inode): Use ext2fs_{read,write}_ind_block
+ so that byte swapping is handled on big-endian systems.
+ (check_super_block): Allow the number of reserved blocks
+ to be 50% of the number of blocks available, in order to
+ be consistent to what is allowed by tune2fs.
+
+2004-12-24 Theodore Ts'o <tytso@mit.edu>
+
+ * pass1.c (e2fsck_pass1): At the end of the pass 1 processing, if
+ we have been signalled to do so, recreate the resize inode.
+
+ * super.c (check_resize_inode): New function which checks to make
+ sure the resize inode is valid. It is called by
+ check_super_block(). If it is invalid, it will signal to
+ pass1.c that the resize inode needs to recreate.
+
+ * e2fsck.h (E2F_FLAG_RESIZE_INODE): New flag
+
+ * problem.c, problem.h (PR_0_RESIZE_INODE_INVALID,
+ PR_1_RESIZE_INODE_CREATE): Add new problem codes.
+
+2004-12-23 Theodore Ts'o <tytso@mit.edu>
+
+ * swapfs.c (swap_inodes): Since swap_inodes bypasses the inode
+ cache for speed reasons, we must flush it to avoid cache
+ coherency problems.
+
+2004-12-16 Theodore Ts'o <tytso@mit.edu>
+
+ * super.c (check_super_block): If the resize_inode feature is not
+ set, check to make sure that s_reserved_gdt_blocks is
+ zero, and that the resize inode is clear.
+
+ * problem.h (PR_0_NONZERO_RESERVED_GDT_BLOCKS,
+ PR_0_CLEAR_RESIZE_INODE): Add new problem codes.
+
+2004-12-15 Theodore Ts'o <tytso@mit.edu>
+
+ * pass1.c (process_block): Applied resize inode patch. Mark the
+ DIND block of the resize inode as being in use.
+
+2004-12-14 Theodore Ts'o <tytso@mit.edu>
+
+ * Makefile.in: Move strip command to install-strip target.
+ Use Linux-kernel-style makefile output for "make install"
+
+ * Makefile.in (installdirs): Use $(MKINSTALLDIRS) macro.
+ Remove sync in the "all" target.
+
+2004-11-30 Theodore Ts'o <tytso@mit.edu>
+
+ * message.c (expand_inode_expression): If the TZ environment
+ variable is set to GMT, use gmtime() instead of
+ localtime() or ctime() to force the use of GMT. This is
+ because the dietlibc doesn't honor the TZ environment
+ variable.
+
+ * e2fsck.h: Add io_options to e2fsck_struct
+
+ * unix.c: If there is a question mark in the device name, separate
+ out the options to the IO layer, and pass it on to
+ ext2fs_open2().
+
+ * Makefile.in: Use Linux-kernel-style makefile output to make it
+ easier to see errors/warnings.
+
+2004-10-04 Richard Mortimer <richm@oldelvet.org.uk>
+
+ * journal.c (e2fsck_check_ext3_journal): Attempt recovery of the
+ filesystem if the journal contains illegal block numbers.
+
+2004-07-26 Theodore Ts'o <tytso@mit.edu>
+
+ * pass1.c (process_block): Change the limit of directory size from
+ 32 MB to 2GB.
+
+2004-05-11 Theodore Ts'o <tytso@mit.edu>
+
+ * journal.c (sync_blockdev): Flush I/O caches to preserve ordering
+ constraints required by the journal recovery code. Thanks
+ to Junfeng Yang from the Stanford Metacompilation group
+ for pointing this out.
+
+ * jfs_user.h: Define sync_blockdev() as an emulated function,
+ instead just being a no-op.
+
+2004-05-04 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (check_if_skip): If the checkinterval is zero, then
+ disregard it when calculating when the next check will
+ take place.
+
+2004-04-12 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (is_on_batt): Be more flexible about the name of the ACPI
+ device that corresponds to the AC adapter. (Addresses
+ Debian bug #242136)
+
+2004-04-03 Theodore Ts'o <tytso@mit.edu>
+
+ * Makefile.in: Update the modtime even if subst doesn't need to
+ update the e2fsck man page, to avoid always re-running
+ subst, especially since there are no dependencies on the
+ man page.
+
+2004-02-28 Theodore Ts'o <tytso@mit.edu>
+
+ * Release of E2fsprogs 1.35
+
+2004-02-24 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (main, PRS), e2fsck.8.in: Add a new -k option which keeps
+ the existing badblocks list when using the -c option.
+ (Addresses Debian bug #229103)
+
+2004-02-23 Theodore Ts'o <tytso@mit.edu>
+
+ * Makefile.in (PROFILED_LIBS, PROFILED_DEPLIBS): Fix reference to
+ libblkid so that the build will work with --enable-profile
+ (Addresses Sourceforge bug #811408)
+
+2004-02-14 Theodore Ts'o <tytso@mit.edu>
+
+ * e2fsck.c (e2fsck_run): Clear the SETJMP_OK flag when returning
+ so we don't double longjump into an invalid stack frame.
+ (Thanks to Matthias Andree for providing this fix.)
+
+2004-01-31 Theodore Ts'o <tytso@mit.edu>
+
+ * problem.c (fix_problem): Don't call print_e2fsck_message if the
+ message is empty; otherwise, the NLS substitution will
+ print the .po header, which is Just Wrong.
+
+2004-01-30 Theodore Ts'o <tytso@mit.edu>
+
+ * pass2.c (deallocate_inode_block): Check to make sure the block
+ number is invalid before deallocating it, to avoid core
+ dumping e2fsck.
+
+2003-12-12 Theodore Ts'o <tytso@mit.edu>
+
+ * pass3.c (check_directory): When reconnecting a directory, we may
+ need to create a lost+found directory. This may
+ invalidate our pointer to the directory information, so we
+ must look it up again after calling
+ e2fsck_reconnect_file(). (Addresses Debian bug #219640).
+
+2003-12-10 Theodore Ts'o <tytso@mit.edu>
+
+ * e2fsck.h (E2F_FLAG_RESTARTED): Assign a unique flag bitfield to
+ E2F_FLAG_RESTARTED. This fixes a bug where if the user
+ specifies an alternate superblock, and the journal needs
+ to be replayed, e2fsck would erroneously assume that
+ journal had been run already without clearing the
+ NEEDS_RECOVERY flag, and bomb out with an error.
+
+2003-12-07 Theodore Ts'o <tytso@mit.edu>
+
+ * badblocks.c, dict.c, ea_refcount.c, ehandler.c, journal.c,
+ pass1.c, pass1b.c, pass2.c, pass3.c, pass5.c, problem.c,
+ rehash.c, super.c, swapfs.c, unix.c, util.c, e2fsck.h: Fix
+ gcc -Wall nitpicks.
+
+ * recovery.c, jfs_user.h: Sync recovery.c with latest 2.5 kernel
+ version.
+
+2003-12-02 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (main): When testing a disk using e2fsck -c, use the list
+ of new bad blocks to replace the current list of bad
+ blocks. This way "e2fsck -c" can be used to recover from
+ a corrupted bad block inode.
+
+ * badblocks.c (test_disk): Remove the test_disk() file; e2fsck
+ will just call read_bad_blocks_file() directly with the
+ file parameter set to NULL.
+
+2003-09-14 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (is_on_batt, check_if_skip): If running on battery, then
+ give an extra grace period before actually forcing a
+ check. That way the laptop will be biased to waiting
+ until we are on AC power before doing the filesystem
+ check. (Addresses Debian bug #205177)
+
+2003-09-13 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (check_if_skip): If the number of mounts until the next
+ forced filesystem check is 5 or less, mention this to the
+ user. (Addresses Debian bug #157194)
+
+ * pass1.c (e2fsck_pass1), problem.h (PR_1_BB_FS_BLOCK),
+ problem.c (PR_1_BB_FS_BLOCK, PR_1_BBINODE_BAD_METABLOCK_PROMPT):
+ Fix up the handling of corrupted indirect blocks in the
+ bad block. We now correctly handle the case where there
+ is an overlap between a block group descriptor or
+ a superblock and a bad block indirect block. In the case
+ where the indirect block is corrupted, we now suggest
+ "e2fsck -c".
+
+2003-09-12 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (PRS): Check the returned name from blkid_get_devname and
+ print an error if the requested LABEL/UUID does not exist.
+
+2003-09-03 Theodore Ts'o <tytso@mit.edu>
+
+ * pass1.c (mark_table_blocks): Use the new function
+ ext2fs_reserve_super_and_bgd to calculate the blocks to be
+ reserved.
+
+2003-08-24 Theodore Ts'o <tytso@mit.edu>
+
+ * util.c (get_backup_sb): Check to make sure the context is passed
+ in non-NULL before trying to dereference it. Otherwise we
+ might core dump when called to expand %S in a problem
+ description.
+
+ * e2fsck.8.in: Adjust description line so that apropos
+ "ext2" or "ext3" will find the man page. (Addresses
+ Debian Bug #206845)
+
+2003-08-21 Theodore Ts'o <tytso@mit.edu>
+
+ * journal.c (e2fsck_move_ext3_journal): When moving the journal or
+ backing up the journal inode, make sure it gets written to
+ all the superblocks.
+
+2003-08-20 Theodore Ts'o <tytso@mit.edu>
+
+ * journal.c (e2fsck_move_ext3_journal): If the superblock's backup
+ journal information is not set, copy the journal inode
+ information to the superblock.
+ (e2fsck_get_journal): If the journal inode is corrupted,
+ synthesize one from the backup information in the
+ superblock.
+
+ * problem.c, problem.h (PR_0_BACKUP_JNL): Add new problem code
+ which is used when we make a backup of the journal inode.
+
+2003-08-19 Theodore Ts'o <tytso@mit.edu>
+
+ * e2fsck.h, unix.c (PRS, e2fsck_clear_progbar,
+ e2fsck_simple_progress): Don't print the ^A and ^B
+ characters which bracket the progress bar when the e2fsck
+ program is talking directly to a tty, but only when it is
+ being piped to another program. (Addresses Debian bug
+ #204137)
+ * unix.c: Move some initialized variables to the BSS segment to
+ shrink the size of the e2fsck executable.
+
+2003-08-01 Philipp Thomas <pthomas@suse.de>
+
+ * Include inttypes.h if present. New macros INT_TO_VOIDPTR and
+ VOIDPTR_TO_INT. Use them throughout for int<->void *
+ casts to fix 64-bit warnings.
+
+ * dirinfo.c, dx_dirinfo.c, e2fsck.c, ea_refcount.c, journal.c,
+ message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
+ pass5.c, super.c, swapfs.c: ext2fs_getmem(),
+ ext2fs_free_mem(), and ext2fs_resize_mem() all now take a
+ 'void *' instead of a 'void **' in order to avoid pointer
+ aliasing problems with GCC 3.x.
+
+2003-07-25 Theodore Ts'o <tytso@mit.edu>
+
+ * Release of E2fsprogs 1.34
+
+2003-07-06 Theodore Ts'o <tytso@mit.edu>
+
+ * pass2.c: Fix gcc -Wall nitpicks (missing #include <string.h>)
+
+ * dict.c, dict.h: Fix gcc -Wall nitpicks (indented cpp directives)
+
+2003-06-8 Theodore Ts'o <tytso@mit.edu>
+
+ * problem.c: Fix spelling error.
+
+2003-05-17 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (show_stats), e2fsck.h: Use ngettext (abbreivated with
+ the macro P_(str1, str2, n)) to simplify the statistics
+ reporting.
+
+2003-05-05 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (main): If --enable-testio-debug is set, then use the
+ test_io manager so we can watch what e2fsck is doing.
+
+2003-05-03 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (show_stats): Remove uneeded use of _() around string
+ under #ifndef NLS
+
+ * problem.c: Mark two strings (PR_1_RELOC_TO and
+ PR_2_NON_UNIQUE_FILE) as not being printf format strings.
+ Fix typo (doubled 'is') in PR_2_FILE_ACL_BAD.
+
+ * Makefile.in: Add $(LIBINTL) to the link line so we can support
+ using the internal gettext library.
+
+ * e2fsck.h: Add #ifndef protection around LOCALEDIR definition.
+
+2003-04-27 Theodore Ts'o <tytso@mit.edu>
+
+ * message.c (expand_at_expression): Fixed NLS support for message
+ abbreviations.
+
+2003-04-21 Theodore Ts'o <tytso@mit.edu>
+
+ * Release of E2fsprogs 1.33
+
+2003-04-19 Theodore Ts'o <tytso@mit.edu>
+
+ * rehash.c: Fix lint warnings by including string.h and ctype.h
+
+ * pass2.c (dict_de_cmp): Fix lint warnings by using const pointers.
+
+ * unix.c (e2fsck_simple_progress), e2fsck.h: Fix lint warnings by
+ using const pointers. Remove unused variables.
+
+2003-04-17 Theodore Ts'o <tytso@mit.edu>
+
+ * rehash.c (name_cmp): Sort the deleted inodes to the end of the
+ list, for portability to systems that whose qsort does not
+ perform a stable sort.
+
+2003-04-16 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c: Bracket progress bar output with control-A and control-B
+ characters. These characters are used as in-band
+ signalling to allow a logging program to filter out the
+ progress bar.
+ (PRS): Use setvbuf instead of setbuf to force stdout and
+ stderr to be non-buffered when the stdout/stderr are a pipe.
+ This fixes a cosmetic problem when using e2fsck under
+ logsave.
+
+2003-04-12 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c: Add #ifdef around #include <sys/ioctl.h>
+
+2003-04-05 Theodore Ts'o <tytso@mit.edu>
+
+ * super.c (check_super_block): Update the global free block and
+ inode counters from the block group specific counters
+ quietly. This is needed for an experimental patch which
+ eliminates locking the entire filesystem when allocating
+ blocks or inodes; if the filesystem is not unmounted
+ cleanly, the global counts may not be accurate.
+
+2003-03-17 Theodore Ts'o <tytso@mit.edu>
+
+ * util.c: Explicitly declare e2fsck_global_ctx as extern for the
+ benefit of the Apple Darwin port.
+
+2003-03-15 Theodore Ts'o <tytso@mit.edu>
+
+ * rehash.c (e2fsck_rehash_dir): If user specified the -n option,
+ skip trying to write out directory.
+ (e2fsck_rehash_directories): Fix the percentage
+ calculation in the progress bar.
+
+2003-03-14 Theodore Ts'o <tytso@mit.edu>
+
+ * problem.c, problem.h (PR_2_REPORT_DUP_DIRENT): Add new problem
+ code.
+
+ * pass2.c (check_dir_block): Check for duplicate filenames within
+ a single directory block (because this is the easy case;
+ we don't currently check for duplicates that span
+ directory blocks, for now. Eventually for htree
+ directories we can do this by searching for all directory
+ blocks that have a hash overflow, and then searching the
+ adjacent blocks to find all other potential duplicates.)
+
+ * iscan.c, scantest.c, unix.c: And #ifdef protection around
+ #include of malloc.h
+
+ * rehash.c (duplicate_search_and_fix): Now search for duplicates
+ filenames, and either prompt to remove a complete
+ duplicate entry, or to rename a duplicate filename.
+ (e2fsck_rehash_dir): Use a progress bar to report
+ progress, and don't print all of the directory inodes as
+ they are optimized.
+
+ * problem.c, problem.h (PR_2_DUPLICATE_DIRENT,
+ PR_2_NON_UNIQUE_FILE): New problem codes.
+
+ * unix.c (e2fsck_simple_progress), e2fsck.h: New function which
+ can be called to provide specialized progress bars that
+ are not related to the top-level pass-based completion
+ percentage.
+
+ * pass3.c (e2fsck_adjust_inode_count), e2fsck.h: Export previously
+ static function.
+
+2003-03-06 <tytso@mit.edu>
+
+ * e2fsck.8.in: Fix minor nit in the -C option. (Addresses Debian
+ bug #173612)
+
+2003-03-01 Theodore Ts'o <tytso@mit.edu>
+
+ * Makefile.in, journal.c, unix.c: Use blkid functions to find the
+ journal from the UUID, and to interpret the device
+ specification.
+
+ * e2fsck.c: Free the blkid_cache when releasing the e2fsck context
+ structure.
+
+ * e2fsck.h: If strnlen is not present, define it as a macro which
+ calls e2fsck_strlen(). Add prototype for string_copy().
+ Add blkid_cache to e2fsck context, and make
+ filesystem_name, device_name, and journal_name be
+ non-const variables.
+
+ * pass1.c, pass2.c: Remove static strnlen function
+
+ * util.c (string_copy, e2fsck_strnlen): New functions
+
+2003-01-29 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (usage): Make descripton -c be a bit more explicit
+
+2003-01-22 Theodore Ts'o <tytso@mit.edu>
+
+ * pass1.c (check_blocks): Use the EXT2_I_SIZE macro.
+
+2003-01-02 Theodore Ts'o <tytso@mit.edu>
+
+ * unix.c (main): Detect if there is an attempt to run the journal
+ twice, and abort with an error if this is the case.
+ (Address IBM Bugzilla bug #1226)
+
+2002-12-18 Theodore Ts'o <tytso@mit.edu>
+
+ * pass2.c (strnlen): Provide strnlen if libc doesn't.
+