X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=e2fsck%2FChangeLog;h=2a8b9c84081bd8fd4981e15b3703865f1123c321;hb=a435ec3449694a8fa299337197cc09624960a3a6;hp=ca623e95e8813185ef10ed347a779841d377d687;hpb=8fdc9985c1e2a4467630b33719b7feb281b7b33b;p=tools%2Fe2fsprogs.git diff --git a/e2fsck/ChangeLog b/e2fsck/ChangeLog index ca623e9..2a8b9c8 100644 --- a/e2fsck/ChangeLog +++ b/e2fsck/ChangeLog @@ -1,3 +1,597 @@ +2003-08-20 Theodore Ts'o + + * 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 + + * 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 + + * 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 + + * Release of E2fsprogs 1.34 + +2003-07-06 Theodore Ts'o + + * pass2.c: Fix gcc -Wall nitpicks (missing #include ) + + * dict.c, dict.h: Fix gcc -Wall nitpicks (indented cpp directives) + +2003-06-8 Theodore Ts'o + + * problem.c: Fix spelling error. + +2003-05-17 Theodore Ts'o + + * 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 + + * 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 + + * 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 + + * message.c (expand_at_expression): Fixed NLS support for message + abbreviations. + +2003-04-21 Theodore Ts'o + + * Release of E2fsprogs 1.33 + +2003-04-19 Theodore Ts'o + + * 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 + + * 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 + + * 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 + + * unix.c: Add #ifdef around #include + +2003-04-05 Theodore Ts'o + + * 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 + + * util.c: Explicitly declare e2fsck_global_ctx as extern for the + benefit of the Apple Darwin port. + +2003-03-15 Theodore Ts'o + + * 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 + + * 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 + + * e2fsck.8.in: Fix minor nit in the -C option. (Addresses Debian + bug #173612) + +2003-03-01 Theodore Ts'o + + * 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 + + * unix.c (usage): Make descripton -c be a bit more explicit + +2003-01-22 Theodore Ts'o + + * pass1.c (check_blocks): Use the EXT2_I_SIZE macro. + +2003-01-02 Theodore Ts'o + + * 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 + + * pass2.c (strnlen): Provide strnlen if libc doesn't. + +2003-11-19 Theodore Ts'o + + * 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 + + * 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 + + * Release of E2fsprogs 1.32 + +2002-11-08 Theodore Ts'o + + * Release of E2fsprogs 1.31 + +2002-11-08 + + * 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 + + * 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 + + * Release of E2fsprogs 1.30 + +2002-10-31 Theodore Ts'o + + * 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 + + * 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 + + * pass1.c (mark_table_blocks): Add support for the meta_blockgroup + filesystem format. + +2002-10-13 Theodore Ts'o + + * 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 + + * pass3.c (e2fsck_get_lost_and_found): Create the lost+found + directory with mode 0700. + +2002-10-02 Theodore Y. Ts'o + + * 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 + + * 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 + + * 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 + + * 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 + + * Release of E2fsprogs 1.29 + +2002-09-06 Theodore Ts'o + + * 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 + + * Release of E2fsprogs 1.28 + +2002-08-31 Theodore Ts'o + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.