Whamcloud - gitweb
ChangeLog, jfs_compat.h, journal.c, pass3.c:
[tools/e2fsprogs.git] / e2fsck / ChangeLog
index a75e47d..de93ab1 100644 (file)
@@ -1,4 +1,415 @@
-1999-09-07    <tytso@rsts-11.mit.edu>
+2000-08-22    <tytso@valinux.com>
+
+       * super.c (release_orphan_inodes): Fix typo; should do bounds
+               checking on next_ino instead of ino.
+
+       * jfs_compat.h (J_ASSERT): 
+       * journal.c (e2fsck_run_ext3_journal): 
+       * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
+
+       * unix.c: Use fatal_error() instead of exit() whenever possible.
+               Also fix the fsck exit codes so that we use FSCK_USAGE
+               when it is appropriate.  Rename global_signal_ctx to
+               e2fsck_global_ctx and let it be exported globally.
+
+       * util.c (fatal_error): Try to flush the I/O manager before
+               forcing an exit.
+
+2000-08-20    <tytso@valinux.com>
+
+       * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
+               e2fsck_check_ext3_journal to smash the journal because
+               journal->j_transaction_sequence wasn't getting
+               initialized.
+
+       * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
+               call to e2fsck_clear_recover from recover_ext3_journal to
+               after the filesystem has been closed and reopened.
+               Otherwise, the superblock in the filesystem handle will
+               probably be stale, and will overwrite the newer version of
+               the superblock written by the log recovery.
+
+       * message.c (expand_inode_expression): Add support for %Iu and %Ig
+
+       * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
+
+       * super.c (release_orphan_inodes, release_inode_block,
+               release_inode_blocks): Update the block group descriptor
+               counts when freeing the orphan inode.  Use
+               PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
+
+       * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
+               attempted to reopen the filesystem using the device name
+               instead of the filesystem name.
+
+2000-08-18    <tytso@valinux.com>
+
+       * Makefile.in: Update the make dependencies
+       
+       * problem.c, problem.h: Add the problem codes: 
+               PR_0_ORPHAN_ILLEGAL_BLOCK_NUM, 
+               PR_0_ORPHAN_ALREADY_CLEARED_BLOCK, 
+               PR_0_ORPHAN_ILLEGAL_HEAD_INODE, 
+               PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
+
+       * super.c (release_inode_blocks, release_orphan_inodes,
+               check_super_block): Add support for clearing orphaned
+               inodes from the unmounted filesystem.
+
+       * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
+               check; this is now handled in check_super_block ---
+               non-journaled filesystems can use the orphan list in the
+               future.  Also, move the the re-opening of the filesystem
+               to e2fsck_run_ext3_journal().
+
+2000-07-12  Andreas Dilger <adilger@turbolinux.com>
+
+       * journal.c: implement loading of ext3 journal for recovery code
+
+       * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
+               Add journal problems.
+
+       * recovery.c (journal_recover): user-space ext3 journal recovery code
+
+       * unix.c (main) : check journal and do recovery in separate steps
+
+2000-08-07    <tytso@snap.thunk.org>
+
+       * unix.c (calc_percent): Make sure that we don't take a floating
+               exception if the max value is zero.  (should normally
+               never happen, but...)
+
+2000-07-13    <tytso@valinux.com>
+
+       * Release of E2fsprogs 1.19
+
+2000-07-06  Theodore Ts'o  <tytso@valinux.com>
+
+       * unix.c (check_if_skip): Modify algorithm for checking
+               s_max_mnt_count to match with the kernel.  (If
+               s_max_mnt_count is negative, ignore the mnt_count check.)
+
+       * unix.c (e2fsck_update_progress): Adjust the width of the
+               progress bar dynamically, based on the filesystem name
+               that we need to display.
+
+       * unix.c (main): If the ext3 needs_recovery flag is set, call
+               e2fsck_run_ext3_journal() and then restart the e2fsck run.
+
+       * journal.c (e2fsck_run_ext3_journal): New file which contains
+               logic to recover the ext3 journal.  This version relies on
+               the kernel being able to mount the filesystem in order to
+               run the journal.
+
+2000-07-05  Theodore Ts'o  <tytso@valinux.com>
+
+       * unix.c (e2fsck_update_progress): Only save and check the last
+               percentage after multiplying it by 10, nor 1000, since we
+               only need to save values to a tenth of a percent (and the
+               percentage is already from 0 .. 100%, not 0 .. 1).
+               Also, re-arrange the logic so that we do the time
+               check only after doing the percentage check, and we
+               only advance the spinner if we're about to display it.
+
+2000-07-04  Theodore Ts'o  <tytso@valinux.com>
+
+       * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
+               field is set; if so, clear it, so that ext3 mounting code
+               won't get confused by the fact that we've cleared out the
+               orphaned inodes.
+
+2000-06-10  Theodore Ts'o  <tytso@valinux.com>
+
+       * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
+               checking for a "should never happen case".
+
+       * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
+               PR_5_COPY_BBITMAP_ERROR): Add new error codes.
+
+2000-05-27  Theodore Ts'o  <tytso@valinux.com>
+
+       * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
+               (cw@foof.org) which checks to see if special devices have
+               a non-zero size, and deals with it.
+
+       * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
+
+2000-05-18  Theodore Ts'o  <tytso@valinux.com>
+
+       * Makefile.in (install): Create a symbolic link for fsck.ext3 as
+               well.
+
+2000-05-08  Theodore Ts'o  <tytso@valinux.com>
+
+       * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
+               code. 
+
+       * super.c (check_super_block): If the OS type in the superblock is
+               the Hurd, check to see if the filetype feature is set, and
+               offer to clear it if so.   This needs to be done since the
+               Hurd doesn't properly support the filetype feature.
+               (And since the hurd allows the transmogrification of files
+               to special files and vice versa --- for no good reason
+               that I can understand --- it can't support the filetype
+               feature for the forseeable future, either.)
+
+2000-04-03  Theodore Ts'o  <tytso@valinux.com>
+
+       * unix.c: For platforms that don't define optarg.h, manually
+               define optarg and optind.
+
+2000-03-20  Theodore Ts'o  <tytso@valinux.com>
+
+       * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
+               Check for the append-only as well as the immutable flag.
+
+       * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
+               append-only flag.   Fix comment for compression flag.
+       
+2000-02-12    <tytso@snap.thunk.org>
+
+       * unix.c (e2fsck_update_progress): Limit the number of updates to
+               the progress bars to 8 times a second.  This allows a 9600
+               baud console link to keep up.
+
+2000-02-11    <tytso@snap.thunk.org>
+
+       * unix.c (main): If compression is enabled on the filesystem,
+               print a warning message (for now).
+
+       * message.c: Add new compression shortcut: @c == compress
+
+       * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
+
+       * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
+               set, check to see if the filesystem supports compression.
+               If it does pass this information down to process_block()
+               so it can treat the compressed block flag words
+               correctly.  If not, offer to clear the flag, since it
+               shouldn't be set.  
+               (process_block): If an inode has the compressed inode flag
+               set, allow EXT2FS_COMPRESSED_BLKADDR.
+
+       * pass1b.c (process_pass1b_block, delete_file_block,
+               clone_file_block):
+       * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
+               see if the block can be skipped.
+
+2000-02-08    <tytso@snap.thunk.org>
+
+       * util.c: Make resource tracking message more concise.
+
+       * e2fsck.h:
+       * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
+               ctx->block_illegal_map, since it's not needed by pass1,
+               and pass1b has been modified to calculate it manually if
+               needed.   This reduces the memory footprint needed by e2fsck.
+
+       * pass1b.c (check_if_fs_block): New static function which returns
+               whether or not a block overlaps with filesystem metadata.
+               This replaces consulting the block_illegal_map bitmap.
+
+       * 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.
+       
+       * 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.
+
+2000-02-06  Theodore Ts'o  <tytso@valinux.com>
+
+       * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
+               flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
+               pass4.c, pass5.c, problem.c, scantest.c, swapfs.c, 
+               unix.c, util.c: Add Internationalization support as 
+               suggested by Marco d'Itri <md@linux.it>.
+
+2000-02-02  Theodore Ts'o  <tytso@valinux.com>
+
+       * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
+               linux/fs.h 
+
+2000-01-18  Theodore Ts'o  <tytso@valinux.com>
+
+       * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
+               we need a separate DEPLIBUUID that can be used in
+               Makefile's dependency rules.
+
+1999-11-23    <tytso@valinux.com>
+
+       * e2fsck.8.in: Update language about where to find a backup
+               superblock.
+
+1999-11-19    <tytso@valinux.com>
+
+       * pass1.c (process_inodes): Add shortcut handling; if
+               process_inodes_count is zero, return right away, to avoid
+               calling qsort with a non-positive count.
+
+       * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
+               to print Delete as ^?
+
+       * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
+               the source directory.
+
+1999-11-10    <tytso@valinux.com>
+
+       * Release of E2fsprogs 1.18
+
+1999-11-10    <tytso@valinux.com>
+
+       * 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. 
+
+1999-11-09    <tytso@valinux.com>
+
+       * 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.
+
+1999-11-07    <tytso@valinux.com>
+
+       * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
+               to prevent it from getting freed twice.
+
+1999-11-06    <tytso@valinux.com>
+
+       * 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.
+
+1999-10-27    <tytso@valinux.com>
+
+       * 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.
+
+1999-10-26    <tytso@valinux.com>
+
+       * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
+               matches the standard convention).
+
+1999-10-26    <tytso@valinux.com>
+
+       * Release of E2fsprogs 1.17
+
+1999-10-26    <tytso@valinux.com>
+
+       * message.c (safe_print): Make safe_print take an char instead of
+               an unsigned char to fix gcc warnings.
+
+1999-10-25    <tytso@valinux.com>
+
+       * 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.
+
+       * 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.
+
+1999-10-22    <tytso@valinux.com>
+
+       * Release of E2fsprogs 1.16
+
+1999-10-22    <tytso@valinux.com>
+
+       * pass2.c (check_filetype): If the filetype filesystem feature is
+               not set, and a directory entry has a dirent feature, offer
+               to clear it (since 2.0 kernels will do complain will
+               interpret it as a very large name length field).
+
+       * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
+
+1999-10-21    <tytso@valinux.com>
+
+       * e2fsck.8.in: Update man page to use a more standard format (bold
+               option flags and italicized variables), as suggested by
+               Andreas Dilger (adilger@enel.ucalgary.ca)
+
+       * 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.
+       
+1999-09-24    <tytso@valinux.com>
+
+       * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
+               e2fsprogs easier to port to non-Unix platforms.
+
+1999-09-07    <tytso@valinux.com>
 
        * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
                internal and external inode counts in sync when we
                inode block count and size files so that the block count
                field is updated correctly when we create an indirect block.
 
+1999-08-05    <tytso@valinux.com>
+
+       * super.c (check_super_block): Check to see whether the
+               inodes_per_group value in the superblock is insanely too
+               high.
+
 1999-08-02    <tytso@valinux.com>
 
        * pass1b.c (clone_file_block): Don't clear the dup_map flag if