.SH SYNOPSIS
.B badblocks
[
+.B \-svwnf
+]
+[
.B \-b
-block-size
+.I block-size
+]
+[
+.B \-c
+.I blocks_at_once
+]
+[
+.B \-i
+.I input_file
]
[
.B \-o
-output_file
+.I output_file
]
[
-.B \-s
+.B \-p
+.I num_passes
]
[
-.B \-v
+.B \-t
+.I test_pattern
]
+.I device
[
-.B \-w
+.I last-block
+] [
+.I start-block
]
-device
-blocks-count [ start-block ]
.SH DESCRIPTION
.B badblocks
is used to search for bad blocks on a device (usually a disk partition).
-.br
.I device
-is the special file corresponding to the device (e.g /dev/hdXX).
-.br
-.I blocks-count
-is the number of blocks on the device.
+is the special file corresponding to the device (e.g
+.IR /dev/hdc1 ).
+.I last-block
+is the last block to be checked; if it is not specified, the last block
+on the device is used as a default.
+.I start-block
+is an optional parameter specifying the starting block number
+for the test, which allows the testing to start in the middle of the
+disk. If it is not specified the first block on the disk is used as a default.
+.PP
+.B Important note:
+If the output of
+.B badblocks
+is going to be fed to the
+.B e2fsck
+or
+.B mke2fs
+programs, it is important that the block size is properly specified,
+since the block numbers which are generated are very dependent on the
+block size in use by the filesystem.
+For this reason, it is strongly recommended that
+users
+.B not
+run
+.B badblocks
+directly, but rather use the
+.B \-c
+option of the
+.B e2fsck
+and
+.B mke2fs
+programs.
.SH OPTIONS
.TP
-.I -b block-size
-Specify the size of blocks in bytes.
+.BI \-b " block-size"
+Specify the size of blocks in bytes. The default is 1024.
+.TP
+.BI \-c " number of blocks"
+is the number of blocks which are tested at a time. The default is 64.
.TP
-.I -o output_file
-Write the list of bad blocks to the specified file. Without this option,
+.B \-f
+Normally, badblocks will refuse to do a read/write or a non-destructive
+test on a device which is mounted, since either can cause the system to
+potentially crash and/or damage the filesystem even if it is mounted
+read-only. This can be overridden using the
+.B \-f
+flag, but should almost never be used --- if you think you're smarter
+than the
.B badblocks
-displays the list on its standard output.
+program, you almost certainly aren't. The only time when this option
+might be safe to use is if the /etc/mtab file is incorrect, and the device
+really isn't mounted.
.TP
-.I -s
+.BI \-i " input_file"
+Read a list of already existing known bad blocks.
+.B Badblocks
+will skip testing these blocks since they are known to be bad. If
+.I input_file
+is specified as "-", the list will be read from the standard input.
+Blocks listed in this list will be omitted from the list of
+.I new
+bad blocks produced on the standard output or in the output file.
+The
+.B \-b
+option of
+.BR dumpe2fs (8)
+can be used to retrieve the list of blocks currently marked bad on
+an existing filesystem, in a format suitable for use with this option.
+.TP
+.BI \-o " output_file"
+Write the list of bad blocks to the specified file. Without this option,
+.B badblocks
+displays the list on its standard output. The format of this file is suitable
+for use by the
+.
+.B \-l
+option in
+.BR e2fsck (8)
+or
+.BR mke2fs (8).
+.TP
+.BI \-p " num_passes"
+Repeat scanning the disk until there are no new blocks discovered in
+num_passes consecutive scans of the disk.
+Default is 0, meaning
+.B badblocks
+will exit after the first pass.
+.TP
+.BI \-t " test_pattern"
+Specify a test pattern to be read (and written) to disk blocks. The
+.I test_pattern
+may either be a numeric value between 0 and ULONG_MAX-1 inclusive, or the word
+"random", which specifies that the block should be filled with a random
+bit pattern.
+For read/write (\fB-w\fR) and non-destructive (\fB-n\fR) modes,
+one or more test patterns may be specified by specifying the
+.B -t
+option for each test pattern desired. For
+read-only mode only a single pattern may be specified and it may not be
+"random". Read-only testing with a pattern assumes that the
+specified pattern has previously been written to the disk - if not, large
+numbers of blocks will fail verification.
+If multiple patterns
+are specified then all blocks will be tested with an one pattern
+before proceeding to the next pattern.
+.TP
+.B \-n
+Use non-destructive read-write mode. By default only a non-destructive
+read-only test is done. This option must not be combined with the
+.B \-w
+option, as they are mutually exclusive.
+.TP
+.B \-s
Show the progress of the scan by writing out the block numbers as they
are checked.
.TP
-.I -v
+.B \-v
Verbose mode.
.TP
-.I -w
+.B \-w
Use write-mode test. With this option,
.B badblocks
scans for bad blocks by writing some patterns (0xaa, 0x55, 0xff, 0x00) on
-every block of the device, reading every block and comparing the contents.
+every block of the device, reading every block and comparing the contents.
+This option may not be combined with the
+.B \-n
+option, as they are mutually exclusive.
.SH WARNING
-Never use the `-w' option on an device containing an existing file system.
-This option erases data!
+Never use the
+.B \-w
+option on an device containing an existing file system.
+This option erases data! If you want to do write-mode testing on
+an existing file system, use the
+.B \-n
+option instead. It is slower, but it will preserve your data.
.SH AUTHOR
.B badblocks
-was written by Remy Card <card@masi.ibp.fr>, the developer and maintainer
-of the ext2 fs.
-.SH BUGS
-I had no chance to make real tests of this program since I use IDE drives,
-which remap bad blocks. I only made some tests on floppies.
+was written by Remy Card <Remy.Card@linux.org>. Current maintainer is
+Theodore Ts'o <tytso@alum.mit.edu>. Non-destructive read/write test
+implemented by David Beattie <dbeattie@softhome.net>.
.SH AVAILABILITY
.B badblocks
-is available for anonymous ftp from ftp.ibp.fr and tsx-11.mit.edu in
-/pub/linux/packages/ext2fs.
+is part of the e2fsprogs package and is available from
+http://e2fsprogs.sourceforge.net.
.SH SEE ALSO
.BR e2fsck (8),
.BR mke2fs (8)