Commit Graph

260 Commits (5d57ad14f31f93384baa92c95d77008fc2ac803f)

Author SHA1 Message Date
Theodore Ts'o 571fc5a89c Fixes necessary for e2fsprogs to work using the diet libc.
- Renamed linux/list.h to be linux/linked_list.h to work around a
  problem caused by diet libc insistence to search the kernel
  header files ahead of all other files in the include path, 
  including the user specified include files.

- Worked around a bug in diet libc which core dumps when using 
  putc with stderr by using fputs instead.  As a bonus, this
  also shaved a few bytes off of com_err.o.

- Fixed a real bug in debugfs which was detected because diet libc
  was more sensitive than glibc when incorrectly using fclose()
  where pclose() is required.
2001-12-02 17:23:27 +01:00
Gabriel Paubert b3b3d465b1 journal.c: fix an endianness bug.
f_badorphan: revert previous, erroneous change.
2001-11-30 13:45:28 +01:00
Theodore Ts'o 24bfb443fc super.c (check_super_block): Make sure that if the inode table
or allocation bitmap is zero, that it is marked as
	invalid, so that in pass #1, a new bitmap/inode table gets
	properly allocated.  (Addresses Debian Bug #116975)
2001-11-26 15:51:14 -05:00
Theodore Ts'o 1e9a7e0278 2fsck.8.in: Fix minor typo in man page and clarify device
specification.
2001-11-24 16:40:57 -05:00
Andreas Dilger 6a138ed42a Allow a single user for internal journals (the current filesystem)
since this is how the filesystem is created.
2001-11-08 17:50:50 -07:00
Theodore Ts'o 62e3e7fe4f journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
V2 fields are set on a V1 journal superblock, or an
	internal V2 journal has s_nr_users is non-zero, clear the
	entire journal superblock beyond the V1 superblock.  This
	fixes botched V1->V2 updates.

problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.

f_bad_local_jnl: New test which tests for a V2 journal with bad 
	fields caused by a botched V1->V2 upgrade.
2001-10-07 02:13:30 -04:00
Theodore Ts'o 773fd8a1d4 e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
which will automatically relocate the ext3 journal from a
	visible file to an invisible journal file if the
	filesystem has been opened read/write.

super.c (check_super_block): Add call to e2fsck_move_ext3_journal

problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
	Add new problem codes.
2001-10-06 21:26:27 -04:00
Theodore Ts'o fbf9111216 Update changelogs for 1.25 release. 2001-09-20 10:47:47 -04:00
Theodore Ts'o ae6cdcf74a e2fsck: If a superblock is specified explicitly by the
user, don't try to automatically fall back to an
	alternate superblock.
2001-09-19 15:17:25 -04:00
Theodore Ts'o fb70775b0f Update for 1.24a release 2001-09-04 15:00:37 -04:00
Theodore Ts'o 109624a133 Update for 1.24 release. 2001-08-31 00:59:55 -04:00
Andreas Dilger 59f27247f8 mke2fs.c (main): Zap the second sector of the disk, along with
any sectors in the same filesystem block after the superblock.
        The latter will remove (for example) swapspace signatures
        on 4kB+ blocksize filesystems.  Also when zeroing the "end"
        of the filesystem don't actually zero the start of a very
        small device (less than 128kB).
2001-08-30 15:39:04 -06:00
Theodore Ts'o b1f204f7f9 pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
either be zero or a regular file (for compatibility with
	Andreas's on-line resizing programs).
2001-08-30 16:42:09 -04:00
Theodore Ts'o 0f8973fb09 Remove EXT2FS_VERSION from the version display, since it
only confuses people.

Make fsck's version display be consistent with the other e2fsprogs
programs.
2001-08-27 12:44:23 -04:00
Theodore Ts'o 943ed874fc Add missing log entry showing when we released e2fsprogs 1.23 2001-08-27 12:29:22 -04:00
Theodore Ts'o 53abed0afa Deal with libc5's lack of strnlen.
Stop checking for strdup in the configure script since we don't 
care about that symbol.
2001-08-27 12:18:16 -04:00
Theodore Ts'o eb4ab51044 super.c (release_orphan_inodes): If the filesystem contains
errors, don't run the orphan * list, since the orphan list
	can't be trusted.
2001-08-13 10:58:41 -04:00
Theodore Ts'o a40ecbb1fc e2fsck/pass1.c (e2fsck_pass1_check_device_inode): If i_blocks is
non-zero, then assume that the device/socket/fifo inode
	is bogus.
2001-08-13 06:15:36 -04:00
Theodore Ts'o 85645a6ff3 pass1.c (check_size): Fix logic in check_size; the previous code
only offered to clear the inode size fields if both size
	and i_size_high were zero.
2001-08-13 06:11:39 -04:00
Theodore Ts'o a474269147 pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
Andreas's symlink code; check_blocks() was unconditionally testing
	inode_bad_map without checking to see if it existed first.  Fixed
	problem a different way; we now no longer check inode_bad_map at all,
	since the file might not get deleted in pass 2 anyway.  We move the
	large file feature reconciliation code to to e2fsck_pass2(), and in
	deallocate_inode() in pass2.c, we decrement the large files counter if
	we're about to delete a large file.
2001-08-09 04:14:04 -04:00
Theodore Ts'o 2b94c658c7 unix.c (show_stats): Print the number of large files in verbose mode. 2001-08-09 04:08:52 -04:00
Theodore Ts'o e3bda78302 Add dependencies to iscan. 2001-08-08 20:50:57 -04:00
Theodore Ts'o d4cac023c2 Add missing errcode_t variable so that iscan compiles. 2001-08-08 16:10:23 -04:00
Theodore Ts'o c0a083fac3 * journal.c (recover_ext3_journal): If s_errno is set in the
journal superblock, set the EXT2_ERROR_FS flag in the
	filesystem superblock after the journal is run.
2001-08-07 10:17:41 -04:00
Theodore Ts'o bd512b6868 Add ChangeLog entry for changes made by Andreas 2001-08-04 21:33:03 -04:00
Andreas Dilger fcdebce7df Change comments for %D and %d expansion in e2fsck problem codes. It
was not consistent which was for dirent expansion, and which was for
directory number expansion.
2001-08-04 01:47:01 -06:00
Theodore Ts'o d007cb4cbb Cleanup changes to Andreas' symlink patch. Remove use of EXT2_LINK_DIR
Also cleaned up the symlink handling code to make it a bit more
compact and to test for a bad symlink block earlier.
2001-08-04 20:39:39 -04:00
Andreas Dilger 67052a8aee Add extra checks for bad symlinks, including zero length symlinks,
too long i_size for slow and fast symlinks, i_size_high set, multiple
blocks for slow symlinks.
2001-08-04 00:51:18 -06:00
Theodore Ts'o 83e6ac84c7 unix.c (check_mount): Remove the code in e2fsck which tested for the
root filesystem being mounted read-only, and depend on the
	results flags from ext2fs_check_if_mounted.
2001-07-30 16:29:52 -04:00
Theodore Ts'o 0628ae3948 unix.c (main): Move the final print_resource_track call after
the filesystem and context handle are closed
2001-07-29 12:26:46 -04:00
Theodore Ts'o 6d222f3217 Fix memory leaks in e2fsck's journal.c, and remove some cases
which look like memory leaks in unix.c so we can more easily find
the true memory leaks.
2001-07-29 12:06:58 -04:00
Theodore Ts'o 1e16526bd9 e2fsck.c (e2fsck_reset_context): Fix bug; only close the io channel if
it is *different* from the filesystem io channel
2001-07-29 11:48:10 -04:00
Theodore Ts'o a092c563f7 Update problem message printed when special files have the immutable
flag set.  Update the f_filetype test case.
2001-07-27 22:40:09 -04:00
Theodore Ts'o fd77b2c78a pass1.c (e2fsck_pass1): Check for symlinks that have the
immutable flag set (and offer to clear them).
2001-07-27 22:10:01 -04:00
Theodore Ts'o 24ceb248ab pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of pass 1.
This avoids increasing the memory footprint of e2fsck by 10%!
2001-07-26 09:02:56 -04:00
Theodore Ts'o 14fe1c3314 Apply fixes reported by Andreas Gruenbacher:
pass1.c (check_ext_attr): Skip zero-length EA entries.

problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should prompt
	to clear the EA block.
2001-07-25 19:48:24 -04:00
Theodore Ts'o adee8d75db Add support for use of an external journal (so long as the external
journal only has one filesystem).
2001-07-23 00:17:49 -04:00
Theodore Ts'o d312401961 unix.c (main): Add an explicit warning when the filesystem is left not
completely fixed when e2fsck exits.  (Addresses Debian bug #104502.)
2001-07-20 14:13:49 -04:00
Theodore Ts'o 55fd07ed0a This patch completes the initial extended attribute/ACL support for
e2fsck.  We now check the entire EA block to make sure that the all
of the EA entries look sane.
2001-07-19 16:31:25 -04:00
Theodore Ts'o 0f2cfe2579 Fix really stupid typo. 2001-07-10 14:34:41 -04:00
Theodore Ts'o 3c6b8977d4 Speed up journal recovery in userspace by avoiding a pointless
unconditional ext2_flush() call.  Also made ext2_flush() more
efficient when the superblock is modified after the filesystem has
been flushed, and make it clear the superblock dirty flag
after doing the superblock/block group descriptor flush.
2001-07-10 14:27:58 -04:00
Theodore Ts'o 7b63fff9b6 pass1b.c (pass1b, process_pass1b_block): Change the num_bad
field calculation so that it only counts EA block entries
	as a single multiply claimed block (since once we clone
	the EA blocks for one inode, we fix the problem for all of
	the other inodes).  Also, I moved the num_bad calculation
	from process_pass1b_block to the end of pass1b.  This
	fixes a *significant* performance bug in pass1b which hit
	people who had to had a lot of multiply claimed blocks.
	(Can you say O(n**3) boys and girls?  I knew you could...
	Fortunately, this case didn't happen that much in actual practice.)
2001-07-07 23:01:31 -04:00
Theodore Ts'o b5acdb6ae2 pass1.c (e2fsck_pass1): Defer inodes which have an extended attribute
block for later processing to avoid extra seeks across the disk.
	(process_inode_cmp): If there is no indirect block, sort by the
	extended attribute (i_file_acl) block.
2001-07-07 22:27:40 -04:00
Theodore Ts'o 7abb2bdcd6 pass1b.c (clone_file_block): Fix bugs when cloning extended attribute
blocks.  Moved free of block_buf to after the code which clones the
	extattr block, and fixed logic for changing pointers to the extended
	attribute field in the inodes which were affected.
 
(decrement_badcount): New function which is used whenever we need to
	decrement the number of files which claim a particular bad block.
	Fixed bug where delete_file wasn't checking check_if_fs_block() before
	clearing the entry in block_dup_map.  This could cause a block which
	was claimed by multiple files as well as the filesystem metadata to
	not be completely fixed.
2001-07-07 13:20:34 -04:00
Theodore Ts'o e8a3ee628a Add code to check and fix incorrect reference counts in the extended
attribute blocks.
2001-07-07 11:12:50 -04:00
Theodore Ts'o 342d847db3 Add initial support for extended attribute blocks 2001-07-02 11:54:09 -04:00
Theodore Ts'o 636a954a30 Use long long to calculate the percentage
of the number of blocks in use in the filesystem.
2001-06-29 17:57:26 -04:00
Theodore Ts'o 67960139d7 Update changelogs for 1.22. 2001-06-23 00:16:37 -04:00
Theodore Ts'o d90f3494b2 e2fsck/flushb.c and lib/ext2fs/flushb.c: Use platform independent
method of defining the BLKFLSBUF and FDFLUSH ioctl's.
	Also include sys/mount.h since on newer glibc's BLKFLSBUF
	is defined there.
2001-06-22 21:01:17 -04:00
Theodore Ts'o 42475e281d super.c (release_inode_blocks): Don't try to release the blocks if the
orphaned inode is a device file, symlink, or some other kind of
	special file that doesn't have a block list.
2001-06-22 20:35:38 -04:00