Whamcloud - gitweb
Add support for backing up the journal inode location in the
[tools/e2fsprogs.git] / e2fsck / ChangeLog
index 1c41176..2a8b9c8 100644 (file)
-2002-02-24  Theodore Tso  <tytso@valinux.com>
+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. 
+
+2003-11-19  Theodore Ts'o  <tytso@mit.edu>
+
+       * unix.c (PRS): Print an error if more than one of the -p/-a, -n
+               or -y options are specified.
+
+2002-11-12  Theodore Ts'o  <tytso@mit.edu>
+
+       * problem.c: Make HTREE problems PR_PREEN_OK, so that we don't
+               abort an e2fsck after the filesystem has been mounted
+               using the 2.4 ext2 codebase.
+
+2002-11-09  Theodore Ts'o  <tytso@mit.edu>
+
+       * Release of E2fsprogs 1.32
+
+2002-11-08  Theodore Ts'o  <tytso@mit.edu>
+
+       * Release of E2fsprogs 1.31
+
+2002-11-08    <tytso@snap.thunk.org>
+
+       * unix.c (main): Fix a bug where e2fsck could erroneously mark a
+               filesystem as being valid if it was being checked and it
+               is interrupted with a ^C.  (Bug introduced in e2fsprogs
+               1.28.)
+
+       * unix.c (PRS), journal.c: Set the default level of journal
+               debugging to be 0, and allow the user to set the level of
+               journal debugging by using the E2FSCK_JBD_DEBUG
+               environment variable.
+
+       * pass1.c (new_table_block), super.c (check_super_block), swapfs.c
+               (swap_filesys): Clear EXT2_FLAG_MASTER_SB_ONLY to make
+               sure the backup superblocks and group descriptors are
+               updated when we make an important change to the
+               superblocks and/or group descriptors.  (i.e., generating a
+               UUID, allocating filesystem metadata, or byte-swapping the
+               filesystem.)
+
+2002-11-07  Theodore Ts'o  <tytso@mit.edu>
+
+       * e2fsck.h, unix.c (main, check_mount): Fix e2fsck so that it
+               returns the appropriate exit code, so that the boot
+               scripts will be told that they need to automatically
+               reboot.
+
+2002-10-31  Theodore Ts'o  <tytso@mit.edu>
+
+       * Release of E2fsprogs 1.30
+
+2002-10-31  Theodore Ts'o  <tytso@mit.edu>
+
+       * unix.c (usage), e2fsck.8.in: Add the -D option to the usage and
+               command synopsis.  (Addresses Debian bug #167108)
+
+       * pass1.c (e2fsck_pass1): Check the superblock write time to see
+               whether or not we can safely do the LOW_DTIME checks.
+               (Addresses Sourceforge bug #620980)
+
+2002-10-30  Theodore Ts'o  <tytso@mit.edu>
+
+       * Makefile.in (install): Search all compression extensions when
+               deleting old man pages.
+
+       * pass1.c (mark_table_blocks): Fix bug in meta_bg support; only
+               mark blocks legacy group descriptor blocks up to 
+               s_first_meta_bg.
+
+2002-10-20  Theodore Ts'o  <tytso@valinux.com>
+
+       * pass1.c (mark_table_blocks): Add support for the meta_blockgroup
+               filesystem format.
+
+2002-10-13  Theodore Ts'o  <tytso@mit.edu>
+
+       * pass3.c (e2fsck_get_lost_and_found): Pass in mode 700 to
+               ext2fs_new_inode().
+
+       * unix.c (show_stats): Fix format bug if NLS is in use.
+
+       * journal.c, pass1.c, revoke.c, util.c: Fix gcc -Wall nits.
+
+2002-10-08  Theodore Ts'o  <tytso@mit.edu>
+
+       * pass3.c (e2fsck_get_lost_and_found): Create the lost+found
+               directory with mode 0700.
+
+2002-10-02  Theodore Y. Ts'o  <tytso@mit.edu>
+       
+       * pass2.c (parse_int_node, check_dir_block): Add byte-swap
+               functions around the htree code, so that it works on
+               big-endian machines.
+
+       * swapfs.c (swap_filesys): For PPC machines, byte-swap the bitmap,
+               since PPC big-endian filesystems were historically wierd.
+               This is just for the regression test, since no one
+               actually uses them anymore...
+
+2002-09-30  Theodore Ts'o  <tytso@mit.edu>
+
+       * problem.c, problem.h (PR_2_HTREE_BAD_LIMIT,
+               PR_2_HTREE_BAD_COUNT, PR_2_HTREE_HASH_ORDER, 
+               PR_2_HTREE_BAD_DEPTH): Add new problem codes.
+
+       * pass2.c (salvage_directory, check_dir_block): Avoid counting
+               directory entries twice during a directory salvage.  Make
+               the salvaging algorithm smarter about directory entry size
+               overruns.
+               (parse_int_node): Add check to make sure the limit and
+               count fields in the node headers are sane.  Also check
+               to make sure the hash table in ascending order.
+               (pass2, htree_depth): For all leaf nodes, determine their
+               depth in the tree, and make sure it matches with the depth
+               in the htree root information.
+
+2002-09-29  Theodore Ts'o  <tytso@mit.edu>
+
+       * pass2.c (check_dir_block): Do a more paranoid check when trying
+               to determine whether or not a directory entry is a
+               completely empty leaf block or leaf node.  Otherwise
+               e2fsck might get confused into thinking that a valid dxdir
+               was corrupted.
+
+       * rehash.c (e2fsck_rehash_dir): Apply patch from Christopher Li
+               which avoids creating an empty directory entry at the end
+               of the directory block.  This screws up earlier versions
+               of the indexed directory patch.
+       
+2002-09-28  Theodore Ts'o  <tytso@mit.edu>
+
+       * rehash.c (write_directory): Clear the index flag if by
+               reoptimizing the directory, we bring it back into a
+               non-indexed state.
+               (e2fsck_rehash_dir): Allow directories that contain two
+               blocks to be indexed.  Otherwise when they grow, they
+               never will be indexed by the kernel.
+
+       * unix.c (main): Only update the master superblock; there's no
+               point updating the backup superblocks, and it speeds up
+               fsck slightly.
+
+       * pass2.c (salvage_directory): New function called by
+               check_dir_block() which is much more sophisticated about
+               how it salvages corrupted filesystems.
+
+2001-09-24  Theodore Tso  <tytso@mit.edu>
+
+       * Release of E2fsprogs 1.29
+
+2002-09-06  Theodore Ts'o  <tytso@mit.edu>
+
+       * rehash.c (copy_dir_entries): Fix bug which caused corrupted
+               directories if there are 4 or 8 bytes left over in a
+               directory page when optimizing/reindexing a directory.
+
+2001-08-31  Theodore Tso  <tytso@thunk.org>
+
+       * Release of E2fsprogs 1.28
+
+2002-08-31  Theodore Ts'o  <tytso@mit.edu>
+
+       * ehandler.c (e2fsck_handle_read_error): If the user asks to
+               ignore the error, offer to try forcing a write of the
+               block to the disk; sometimes this will cause the drive to
+               remap the bad block.
+
+2002-08-31  Theodore Ts'o  <tytso@valinux.com>
+
+       * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
+               dblist so that the first block of all of the directories
+               is handled first so we can read the hash version
+               information.
+               (check_dir_block): Examine the root node for correctness,
+               and offer to clear it if it is not correct.  Also copy the
+               hash version to the dx_dir structure, so that the proper
+               hash function can be used for other blocks in the
+               directory.
+
+       * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
+
+2002-08-21  Theodore Ts'o  <tytso@mit.edu>
+
+       * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
+               it is necessary to find contiguous blocks in a particular
+               block group.
+
+2002-08-17  Theodore Ts'o  <tytso@mit.edu>
+
+       * e2fsck.8.in: Add clarifying text describing how e2fsck works
+               with ext3 filesytems.  (Addresses Debian bug #145044).
+
+       * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
+
+       * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
+               the e2fsck context, ext_attr_ver, which specifies the EA
+               format version.
+
+       * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
+               option -E, which allows the users to specify extended
+               options.  Added ea_ver extended option.
+
+       * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
+               argument to this function, so we can account for the
+               presence of extended attribute blocks attached to device
+               inodes.
+               (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
+               account the fact that symlinks can also have extended
+               attribute blocks.
+               (check_ext_attr): Don't be flexible about the EA format
+               version.  Check against the version number in
+               ctx->ext_attr_ver. 
+               (check_blocks): Check all inodes, so that we account for
+               extended attribute blocks belonging to special files.
+               Clean up i_size checks.
+
+       * pass1b.c (pass1b): Check all inodes, so that we account for
+               extended attribute blocks belonging to special files.
+               (delete_file_block): Use ext2fs_alloc_block_stats() to
+               update the filesystem statistics.
+               (delete_file): Attempt to decrement the extended
+               attribute refcount, and free the EA block if the count
+               hits zero.
+               (clone_file): Fixed bugs in EA handling.  Don't call
+               block_iterate on inodes that don't have a valid i_block[]
+               array.  Reread the base inode since it may have been
+               changed by ext2fs_block_iterate.  When updating inodes as
+               part of cloning an EA block, write out the correct inode
+               structure.
+
+       * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
+               ext2fs_alloc_*_stats functions to update the filesystem 
+               statistics.
+               (deallocate_inode): Attempt to decrement the extended
+               attribute refcount, and free the EA block if the count
+               hits zero. 
+               (e2fsck_process_bad_inode): Add extra argument to calls 
+               to e2fsck_pass1_check_device_inode ().
+
+       * pass3.c (e2fsck_get_lost_and_found): Use standard
+               ext2fs_alloc_*_stats functions to update the filesystem.
+               statistics when creating /lost+found.
+               (adjust_inode_count): Remove debugging code that can never
+               be triggered.
+
+       * pass4.c (disconnect_inode): Add explanation about why we only
+               clear inodes that have no data blocks and no EA blocks.
+               Use ext2fs_inode_alloc_stats2 function to update the
+               filesystem statistics when clearing a zero-length inode.
+
+       * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
+               PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
+
+       * super.c (release_inode_block), (release_orphan_inodes): Use the
+               standard ext2fs_alloc_*_stats functions to update the
+               filesystem statistics.
+               (release_inode_blocks): Attempt to decrement the extended
+               attribute refcount, and free the EA block if the count
+               hits zero.
+
+2002-08-01  Theodore Ts'o  <tytso@mit.edu>
+
+       * dict.c, dict.h: New file from kazlib 1.20 which implements a
+               red-black tree
+       
+       * pass1b.c: Massive changes to take advantage of dict.c.  This
+               removes several O(n**2) algorithms from the rare case
+               where there are a large number of blocks claimed by
+               multiple inodes.
+
+2002-07-24  Theodore Ts'o  <tytso@mit.edu>
+
+       * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
+               Add new option -D, which requests e2fsck to optimize all
+               directories.  Rehash.c will also compress and sort
+               non-indexed directories.
+
+       * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
+
+       * unix.c (PRS): Make sure the signal_cancel is registered without
+               SA_RESTART.
+
+       * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
+               Restructured code in e2fsck_rehash_dir into two new
+               subroutines to make the code more understandable/maintainable.
+               (set_root_node): Fixed bug which caused the root node to
+               be invalid on non-FILETYPE filesystems due to an
+               unitialized variable.
+               (calculate_tree): Fix bug where pointers which might get
+               invalidated if realloc() moves outdir->buf around.
+               (e2fsck_rehash_dir): Fix memory leak bug.
+
+       * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
+               Exported as a public interface a function for finding the
+               lost and found directory.  Cache the location of the lost
+               and found directory in the e2fsck context structure.
+
+       * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
+               and abort processing by longjmp'ing to ctx->abort_loc.
+
+2002-07-23  Theodore Ts'o  <tytso@mit.edu>
+
+       * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
+               the dirs_to_hash list, since we don't want to reindex
+               directories if the filesystem is opened read-only.
+
+2002-07-21  Theodore Ts'o  <tytso@mit.edu>
+
+       * e2fsck.8.in: Document new exit code FSCK_CANCELED
+
+       * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
+               and set a flag in the e2fsck context indicating that
+               cancellation has been requested, so that e2fsck will exit
+               only at safe points.
+               (main): Change the exit handling so that if a cancellation
+               is requested, return FSCK_CANCELED (a new exit code 32).
+               e2fsck can now return more than one exit code as part of a
+               bitmask (as had been documented in the man page).
+
+       * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
+               pass4.c (e2fsck_pass4): Check to see if a cancellation was
+               requested, and abort processing if necessary.
+
+2002-07-19  Theodore Ts'o  <tytso@mit.edu>
+
+       * rehash.c, Makefile.in: New file which rewrites directories using
+               the htree format.
+       
+       * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
+               which suppresses the header printed when in preen mode.
+
+       * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
+               list, call e2fsck_rehash_directories to reindex those
+               directories.
+               (e2fsck_expand_directory): Generalize the old
+               expand_dirctory() function so it can expand a directory to
+               a guaranteed minimum size. 
+
+       * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list.  Add
+               new function prototypes for rehash.c and for
+               e2fsck_expand_directory().
+       
+       * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
+
+       * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
+               htree feature is present in the filesystem.
+               (check_blocks): If a non-htree directory has more than 2
+               blocks, put it on the dirs_to_hash list.
+
+       * pass2.c (clear_htree): Add corrupt htree directories to the
+               dirs_to_hash list.
+
+       * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER, 
+               PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
+               PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
+
+       * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
+               problem display.
+       
+2002-07-15  Theodore Ts'o  <tytso@mit.edu>
+
+       * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
+               dx_dir->ino to indicate that a bad inode was cleared.
+
+2002-06-26  Theodore Ts'o  <tytso@mit.edu>
+
+       * pass1.c (check_blocks): Move htree handling to handle_htree().
+               Factor out calls to ext2fs_write_inode so that it happens
+               if dirty_inode is non-zero.
+               (handle_htree): Add checks for invalid htree root, invalid
+               hash version, invalid hash version, and htree depth too deep.
+
+       * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
+               PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH): 
+               Add new problem codes.
+
+       * pass2.c (parse_int_node): Fix silly typo.
+               (check_dir_block): Change to use new ext2fs_dirhash()
+               function prototype.
+               (pass2): Fixed two minor bugs discovered by the test case:
+               Don't stop checking dxdir's after clearing a bad inode.  
+               If there is a bad max hash, make sure the bad_dir flag
+               is set to make sure we try to clear inode.
+
+2002-06-25  Theodore Ts'o  <tytso@mit.edu>
+
+       * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
+
+       * message.c: Add new abbrevations @h and @p, "HTREE directory
+               inode" and "problem in".
+
+       * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
+               register the block into the indexed directory data
+               structures.  Or if the filesystem doesn't have the
+               DIR_INDEX flag, offer to clear the INDEX_FL.
+
+       * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
+               directories (we don't check all possible corruptions yet).
+
+       * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF, 
+               PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
+               PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
+               new problem codes.
+
+       * unix.c (main): If ENABLE_HTREE is not defined, complain if the
+               filesystem has the dir_index feature.
+
+       * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
+               functions) which keeps track of blocks in HTREE directory
+               blocks.
+
+2002-05-22  Andreas Dilger <adilger@clusterfs.com>
+
+       * super.c (check_superblock): Check that the number of inodes and
+               blocks in a group is less than 2^16, so that the free inode
+               and block counts for a group fit into the group descriptor
+               table fields.  Any more than that would need a COMPAT flag.
+
+2002-05-22  Theodore Ts'o  <tytso@mit.edu>
+
+       * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
+               format.  We automatically determine from the first EA
+               block we visit whether we are using the V1 or V2 format.
+
+2002-05-21  Theodore Ts'o  <tytso@mit.edu>
+
+       * pass1.c (process_block): If an inode has too many blocks or
+               is too big, then offer to truncate the inode.
+               (check_blocks): Don't bother checking the size to see if
+               it's too big, since that's just a symptom, not the disease
+               (which we're now appropriately checking in process_block).
+
+       * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
+               PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
+               add the latch code PR_LATCH_TOOBIG.
+
+2002-05-20  Theodore Ts'o  <tytso@mit.edu>
+
+       * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
+               (e2fsck_process_bad_inode): Add an extra
+               argument so a scratch buffer can be passed into the
+               function.
+
+       * pass1.c (e2fsck_pass1_check_device_inode,
+               e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
+               set, then the device/FIFO is invalid.
+               (check_immutable): Don't check for EXT2_INDEX_FL; we take
+               care of that elsewhere now.
+               (e2fsck_pass1): Check to see if the symlink is valid
+               before we offer to clear any immutable bits.  This matches
+               the order in which we check other special files.
+
+       * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
+               can pass part of it to e2fsck_process_bad_inode.
+
+       * pass4.c (e2fsck_pass4): If we need to call
+               e2fsck_process_bad_inode(), allocate the necessary scratch
+               buffer.
+
+       * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
+               PR_2_INVALID_SYMLINK, and change the text
+               accordingly.  Revert the text change for PR_1_SET_IMMUTABLE
+               since we no longer check for EXT2_INDEX_FL in
+               check_immutable().
+
+2002-05-18  Andreas Dilger <adilger@clusterfs.com>
+
+       * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
+               immutable/append-only checks, since this is handled by
+               check_immutable.  For non-fast symlinks, read in the
+               data block and check the length to make sure it
+               matches with the inode size.
+               (check_immutable): Generalize to also check for the 
+               EXT2_INDEX_FL flag. 
+               (check_blocks): For non-regular files, signal a bad inode 
+               size if i_size_high is non-zero.
+
+       * pass2.c: Only count large files if they are regular files
+               (not just if they aren't directories).
+
+       * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
+               to indicate that it can be triggered by any symlink,
+               not fast symlink.  Change text for PR_1_SET_IMMUTABLE
+               to indicate that it the EXT2_INDEX_FL was set.
+
+2002-05-17  Theodore Ts'o  <tytso@mit.edu>
+
+       * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
+               this value by the calculated value of max_sect_sizes.
+               The inode may be a sparse inode, and the limit of
+               max_sect_sizes assumed a non-sparse inode and a limit
+               based on a 32-bit i_blocks field measured in 512 sectors.
+
+       * super.c (check_super_block): Fix check for s_log_block_size so
+               that takes into account fact that there is an offset of
+               EXT2_MIN_BLOCK_LOG_SIZE.
+
+       * pass1.c: Allocate max_sizes array to be big enough to support
+               the larger block sizes.
+
+2002-05-16  Andreas Dilger <adilger@clusterfs.com>
+
+       * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
+               instead of using a hardcoded value of 4096.
+
+       * super.c (check_super_block): Change checks for s_log_block_size
+               s_log_frag_size so they support the larger block sizes.
+
+       * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
+               sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
+               greater than 4k).
+
+2002-03-08  Theodore Tso  <tytso@mit.edu>
+
+       * Release of E2fsprogs 1.27
+
+2002-03-07  Theodore Tso  <tytso@mit.edu>
+
+       * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
+
+2002-03-07  Theodore Tso  <tytso@mit.edu>
+
+       * unix.c (main): Don't close the filesystem before calling
+               fatal_error(); this just causes a needless warning about a
+               bad I/O manager magic number.
+
+       * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
+               in case the journal is too small, or the inode number in
+               the superblock doesn't appear to be random.
+
+2002-03-06  Theodore Tso  <tytso@mit.edu>
+
+       * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
+               PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
+               PR_5_INODE_RANGE_USED: Add new problem codes.
+
+       * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
+               reporting of adjacent blocks and inodes into a range.
+
+2002-03-04  Philipp Thomas  <pthomas@suse.de>
+
+        * unix.c (main): Newer libintl needs LC_CTYPE to be set in
+               addition to LC_MESSAGES.
+
+2002-02-24  Theodore Tso  <tytso@mit.edu>
 
        * Makefile.in (install): Install hard links for man pages for
                fsck.ext2 and fsck.ext3.  Remove any compressed man
                pages before installing the man pages.
 
-2002-02-22  Theodore Tso  <tytso@valinux.com>
+2002-02-22  Theodore Tso  <tytso@mit.edu>
 
        * journal.c: Improve code maintainability and reduce code size by 
                moving common code paths in e2fsck_journal_init_dev() and