Commit Graph

55 Commits (7e0136332c072ae4b13788867e7f840baaffe0ab)

Author SHA1 Message Date
Vitaliy Filippov 7e0136332c Add patch_io manager support to resize2fs and e2fsck 2016-09-25 23:47:26 +03:00
Theodore Ts'o a9a81b1f2f debugfs.8, e2fsck.8: clarify man pages these programs can operate on files
Addresses-Debian-Bug: #766127

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2016-06-02 23:29:12 -04:00
Theodore Ts'o bc8f1ae523 Fix various man pages and usage message
Thanks to pete@lyptonyx for doing a close pass editing of e2fsprogs's
man pages.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2016-05-08 22:18:51 -04:00
Darrick J. Wong ce9b74ab4f e2fsck: optionally create an undo file
Provide the user with an option to create an undo file so that they
can roll back a failed repair operation.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2015-05-05 10:40:49 -04:00
Darrick J. Wong e228d700d5 e2fsck: rebuild sparse extent trees & convert non-extent ext3 files
Teach e2fsck to (re)construct extent trees.  This enables us to do
either of the following: compress a highly sparse extent tree into
fewer ETB blocks; or convert a ext3-style block mapped file to an
extent file.  The reconstruction is performed during pass 1E or 3A,
as detailed below.

For files that are already extent based, this algorithm will
automatically run (pending user approval) if pass1 determines either
(1) that a whole level of extent tree will fit into a higher level of
the tree; (2) that the size of any level can be reduced by at least
one ETB block; or (3) the extent tree is unnecessarily deep.  It will
not run at all if errors are found and the user declines to fix the
errors.

The option "-E bmap2extent" can be used to force e2fsck to convert all
block map files to extent trees, and to rebuild all extent files'
extent trees.  After conversion, files larger than 12 blocks should be
defragmented to eliminate empty holes where a block lives.

The extent tree constructor is pretty dumb -- it creates a list of
leaf extents (adjacent extents are collapsed), marks all indirect
blocks / ETB blocks free, installs a new extent tree root in the
inode, then loads the leaf extents into the tree.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2015-04-21 16:22:59 -04:00
Darrick J. Wong a5abfe0382 e2fsck: read-ahead metadata during passes 1, 2, and 4
e2fsck pass1 is modified to use the block group data prefetch function
to try to fetch the inode tables into the pagecache before it is
needed.  We iterate through the blockgroups until we have enough inode
tables that need reading such that we can issue readahead; then we sit
and wait until the last inode table block read of the last group to
start fetching the next bunch.

pass2 is modified to use the dirblock prefetching function to prefetch
the list of directory blocks that are assembled in pass1.  We use the
"iterate a subset of a dblist" and avoid copying the dblist.  Directory
blocks are fetched incrementally as we walk through the directory
block list.  In previous iterations of this patch we would free the
directory blocks after processing, but the performance hit to e2fsck
itself wasn't worth it.  Furthermore, it is anticipated that most
users will then mount the FS and start using the directories, so they
may as well remain in the page cache.

pass4 is modified to prefetch the block and inode bitmaps in
anticipation of pass 5, because pass4 is entirely CPU bound.

In general, these mechanisms can decrease fsck time by 10-40%, if the
host system has sufficient memory and the storage system can provide a
lot of IOPs.  Pretty much any storage system capable of handling
multiple IOs in-flight at any time will see a fairly large performance
boost.  (Single-issue USB mass storage disks seem to suffer badly.)

By default, the readahead buffer size will be set to the size of a block
group's inode table (which is 2MiB for a regular ext4 FS).  The -E
readahead_kb= option can be given to specify the amount of memory to
use for readahead or zero to disable it entirely; or an option can be
given in e2fsck.conf.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2015-04-21 10:40:21 -04:00
Darrick J. Wong aeb933b3f2 e2fsck: add a 'yes to all' response in interactive mode
Provide a mechanism for a user to switch fsck into '-y' mode if they
start an interactive session and then get tired of pressing 'y' in
response to numerous prompts.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2015-02-16 10:41:20 -05:00
Theodore Ts'o 585545e1ee Fix spelling typo's in man pages for tune2fs and mke2fs
Addresses-Debian-Bug: #680114

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2012-07-14 19:58:06 -04:00
Theodore Ts'o af67c12f77 e2fsck.8: fix spelling mistake in man page
Addresses-Debian-Bug: #642193

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2011-09-20 13:21:28 -04:00
Theodore Ts'o 25623feab4 Merge branch 'master' into next
Conflicts:
	e2fsck/e2fsck.h
	e2fsck/unix.c
2010-12-16 23:20:11 -05:00
Bernd Schubert 71873b1730 e2fsck: add an option which causes it to only do a journal replay
As recently discussed on linux-ext4@vger.kernel.org add an option to e2fsck
to allow to replay the journal only. That will allow scripts, such as
pacemakers 'Filesystem' RA to first replay the journal and if that sets
an error state from the journal replay, further check for that error
(dumpe2fh -h | grep "Filesystem state:") and if that shows and error
to refuse to mount. It also allows automatic e2fsck scripts to first
replay the journal and on a second run after the real pass1 to passX checks
to test for the return code.

Signed-off-by: Bernd Schubert <bschubert@ddn.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2010-12-06 17:15:55 -05:00
Lukas Czerner efa1a355a1 e2fsck: Discard free data and inode blocks.
In Pass 5 when we are checking block and inode bitmaps we have great
opportunity to discard free space and unused inodes on the device,
because bitmaps has just been verified as valid. This commit takes
advantage of this opportunity and discards both, all free space and
unused inodes.

I have added new set of options, 'nodiscard' and 'discard'. When the
underlying devices does not support discard, or discard ends with an
error, or when any kind of error occurs on the filesystem, no further
discard attempt will be made and the e2fsck will behave as it would
with nodiscard option provided.

As an addition, when there is any not-yet-zeroed inode table and
discard zeroes data, then inode table is marked as zeroed.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2010-11-22 21:01:41 -05:00
Theodore Ts'o 298c9c2f2e e2fsck: Make the -n always open the file system read-only
A user was surprised when -n -D caused the file system to be opened
read/write, and then outsmarted himself when e2fsck asked the question:

   WARNING!!!  Running e2fsck on a mounted filesystem may cause
   SEVERE filesystem damage.

   Do you really want to continue (y/n)?

This is partially our fault for not documenting the fact that -D
overrode opening the filesystem read-write.  But the bottom line is it
much safer if -n *always* opens the file system read-only, so there
can be no confusion.  This means that we have to disable certain
combination of options, such as "-n -c", "-n -l", and "-n -L", and
"-n -D", but the utility of these combinations is pretty low, and
is more than offset by making e2fsck idiot-proof.

Addresses-Launchpad-Bug: #537483

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2010-03-15 00:14:12 -04:00
Theodore Ts'o 4f858546e1 Update man pages to include ext4 in the synposis, instead of just "ext2/ext3"
The e2fsprogs programs have historically just said that they operate
on ext2 and ext3 file system in their man pages.  Update them to say
that they also operate on ext4 file systems.

Addresses-Launchpad-bug: #381854

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2009-05-30 12:34:28 -04:00
Theodore Ts'o 0f589a4d57 Fix spelling mistake in e2fsck man page
Addresses-Launchpad-Bug: #275272

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-10-01 20:27:41 -04:00
Theodore Ts'o 63b5e354d9 e2fsck: Fix check to see if an extent-based file is fragmented
Also added support for "e2fsck -E fragcheck" which issues a
comprehensive report of discontiguous file extents.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-08-10 22:43:24 -04:00
Theodore Ts'o 9329866d3d Add a reference to e2fsck.conf(5) to the e2fsck man page
Addresses-Debian-Bug: #393313

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-06-18 11:27:21 -04:00
Theodore Ts'o a70f10dbc4 Merge branch 'maint' 2008-03-30 14:03:51 -04:00
Theodore Ts'o be62523be2 e2fsck: Support a negative argument to -C to suppress progress information
If a negative progress argument is given to -C, initially suppress the
progress information.  It can be enabled later by sending the e2fsck
process a SIGUSR1 signal.

Addresses-Launchpad-Bug: #203323
Addresses-Sourceforge-Bug: #1926023

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-03-26 08:26:01 -04:00
Theodore Ts'o a49670e64e Merge branch 'maint'
Conflicts:

	lib/blkid/devname.c
	lib/blkid/probe.c
	misc/mke2fs.c
	misc/tune2fs.c
2008-02-27 18:53:34 -05:00
Theodore Ts'o a3d9d37664 e2fsck: Document that the -D option finds duplicate file names
Document in the e2fsck man page that e2fsck finds duplicate filenames
only when the -D option is passed to e2fsck.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-02-26 12:50:51 -05:00
Theodore Ts'o fef2b38d8e Merge branch 'maint' into next
Conflicts:

	configure
	debian/rules
	e2fsck/swapfs.c
	lib/ext2fs/ext2_fs.h
2008-01-01 12:41:35 -05:00
Theodore Ts'o 1e5c6d34e7 Expand discussion of the -D option in e2fsck's man page
Add an explanation of how e2fsck might decide to optimize a few
directories even without the -D option being specified.

Addresses-Debian-Bug: #441872

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-01-01 00:22:46 -05:00
Theodore Ts'o 1a855cb21f Remove e2fsck's -s and -S options to byte-swap ancient PPC filesystems
The need for fixing byte-swapped filesystems is long-gone, and this is
getting in the way of cleaning up e2fsprogs's bitmaps code.  So let's
get rid of it; modern kernels haven't been able to deal with a
byte-swapped filesystem in in about 9 years.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2007-08-11 01:58:21 -04:00
Theodore Ts'o 9447f38a17 Fix spelling mistakes in e2fsck, mke2fs.conf, and resize2fs man pages
Addresses Debian Bugs: #368392, #368393, #368394

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2006-05-22 17:59:37 -04:00
Theodore Ts'o cd84823aed Add badblocks(8) to SEE ALSO section of e2fsck's man page.
Addresses Debian Bug: #347295

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2006-03-27 12:10:07 -05:00
Theodore Ts'o bba44f956e Clarify the e2fsck man page regarding the -c option
A user was confused about whether or not e2fsck -c performed a destructive 
test on the filesystem, since it stated that -cc resulted in a non-destructive
read/write test.   Clarify that -c does a read/only test.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2005-12-09 18:18:06 -05:00
Theodore Ts'o 84d3518bb9 Clarify description of the -p, -n, and -y options in the e2fsck man page.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2005-12-09 17:28:56 -05:00
Theodore Ts'o 5fb86b425e Fix minor typo introduced in e2fsck man page. 2005-06-20 08:24:28 -04:00
Theodore Ts'o 73d1d49ac1 Make the e2fsck man page 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-19 21:04:12 -04:00
Theodore Ts'o 15f5051e39 Fix a minor spelling typo in blkid's man page, and update e2fsck's REPORTING
BUGS section to request that e2fsck's messages printed in English, and to 
send a raw e2image filesystem dump if possible.
2005-06-05 16:46:19 -04:00
Theodore Ts'o 8139367bbd Fix spelling mistakes in man pages. (Addresses Debian Bugs: #304591,
#304592, #304594, #304597, #304593)
2005-04-16 14:05:09 -04:00
Theodore Ts'o 4fb9d52ba6 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-24 00:16:09 -05:00
Theodore Ts'o a7ac1df34f Adjust description line so that apropos "ext2" or "ext3" will
find all of the e2fsprogs man pages.  (Addresses Debian Bug #206845)
2003-08-24 17:56:41 -04:00
Theodore Ts'o 77be4d2df1 Minor man page fixes (Addresses Debian bugs #173612, #175233,
#175113, and #170497)
2003-03-06 12:39:55 -05:00
Theodore Ts'o b40ffd792e unix.c (usage), e2fsck.8.in: Add the -D option to the usage and
command synopsis.  (Addresses Debian bug #167108)
2002-10-31 19:30:24 -05:00
Theodore Ts'o f044b4d8a0 Update and clarify man pages (addresses Debian Bug #145044).
Let e2fsck allow use of the TEA hash.

Mke2fs will no longer abort if it can't zero blocks at the end of the
filesystem.  (Addresses Debian Bug #155007)
2002-08-17 13:32:21 -04:00
Theodore Ts'o 0684a4f33b Overhaul extended attribute handling. Should now be correct with
respect to the latest V2 bestbits ACL code.
2002-08-17 10:19:44 -04:00
Theodore Ts'o 850d05e9aa Add e2fsck -D option which optimizes/compresses directories.
General cleanup of rehash code.  (Fixed a few bugs, reformatted
code to make it more maintainable, etc.)
2002-07-25 00:00:08 -04:00
Theodore Ts'o 4cae04529e Add SIGINT and SIGTERM handling to fsck and e2fsck. For e2fsck,
make sure we gracefully clean up and only exit at safe points.
For fsck, we pass the SIGINT/SIGTERM signal to the child processes,
so they can do their own cleanup.
2002-07-21 14:14:03 -04:00
Theodore Ts'o 3ed57c27df In mke2fs and e2fsck, specifying the -c option twice will now do
a read/write test on the disk.  Update the man pages to encourage
using the -c option, and to discouraging running badblocks separately,
since users tend to forget to set the blocksize when running 
badblocks.
2001-12-24 15:01:59 -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
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 5f629b7491 ChangeLog, e2fsck.8.in:
e2fsck.8.in: Add explanation that you can use mke2fs -n -b blocksize
  	to printout alternate superblock locations.
2001-05-01 20:01:08 +00:00
Theodore Ts'o 3b5386dca8 Many files:
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
  jfs.h, recovery.c: Files ext3 kernel code.
  jfs_compat.h: Compatibility header file to allow kernel code to be
  	linked to e2fsck.
2000-08-14 14:25:19 +00:00
Theodore Ts'o a1ccadb4ad ChangeLog, e2fsck.8.in:
e2fsck.8.in: Update language about where to find a backup superblock.
1999-11-23 13:57:16 +00:00
Theodore Ts'o caf8ce4cc4 Many files:
badblocks.8.in, chattr.1.in, dumpe2fs.8.in, e2label.8.in,
  fsck.8.in, lsattr.1.in, mke2fs.8.in, mklost+found.8.in,
  tune2fs.8.in, uuidgen.1.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)
ChangeLog, e2fsck.8.in:
  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)
ChangeLog, uuid_generate.3.in:
  uuid_generate.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)
1999-10-21 19:56:34 +00:00
Theodore Ts'o 5596defa1e Many files:
unix.c: Add support for calculating a progress bar if the -C0 option
  	is given.  The function e2fsck_clear_progbar() clears the progress bar
  	and must be called before any message is issued.  SIGUSR1 will enable
  	the progress bar, and SIGUSR2 will disable the progress bar.  This is
  	used by fsck to handle parallel filesystem checks.  Also, set the
  	device_name from the filesystem label if it is available.
  e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and E2F_FLAG_PROG_SUPRESS.
  	Add new field in the e2fsck structure which contains the last tenth of
  	a percent printed for the user.
  message.c (print_e2fsck_message): Add call to e2fsck_clear_progbar().
  pass1.c (e2fsck_pass1):
  pass2.c (e2fsck_pass2):
  pass3.c (e2fsck_pass3):
  pass4.c (e2fsck_pass4):
  pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when printing
  	the resource tracking information.
  pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is an
  	error in the bitmaps, suppress printing the progress bar using the
  	suppression flag for the remainder of the check, in order to clean up
  	the display.
1999-07-19 15:27:37 +00:00
Theodore Ts'o efac9a1b8d ChangeLog, e2fsck.8.in, e2fsck.h, pass5.c, unix.c:
unix.c (PRS): Added new option -C, which causes e2fsck to print
  	progress updates so that callers can keep track of the completion
  	progress of e2fsck.  Designed for use by progress, except for -C 0,
  	which prints a spinning report which may be useful for some users.
  pass5.c (e2fsck_pass5): Use a finer-grained progress reporting scheme
  	(useful for larger filesystems).
  e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
  	progress reporting functions.
1998-05-07 05:02:00 +00:00
Theodore Ts'o 4313932cd7 ChangeLog, e2fsck.8.in, e2fsck.h, pass3.c, pass4.c, super.c:
e2fsck.h: Add new field, priv_data to the e2fsck context structure.
  	It should be used by callers of the e2fsck functions only, and not by
  	anything in e2fsck itself.
  super.c: Instead of call ext2fs_get_device_size(), define and call
  	e2fsck_get_device_size().  (This function may be stubbed out in
  	special versions of e2fsck.)
  pass3.c, pass4.c: Remove extra calls to the progress function that
  	weren't needed.
  mke2fs.8.in: Update man page to note that the format of the bad block
  	file is the same as the one generated by badblocks.
1998-02-16 22:34:46 +00:00