libbtrfsutil: add btrfs_util_delete_subvolume()
[platform/upstream/btrfs-progs.git] / Documentation / btrfs-scrub.asciidoc
index 2335aba..d2d2062 100644 (file)
@@ -3,7 +3,7 @@ btrfs-scrub(8)
 
 NAME
 ----
-btrfs-scrub - scrub btrfs filesystem
+btrfs-scrub - scrub btrfs filesystem, verify block checksums
 
 SYNOPSIS
 --------
@@ -12,21 +12,35 @@ SYNOPSIS
 DESCRIPTION
 -----------
 *btrfs scrub* is used to scrub a btrfs filesystem, which will read all data
-from all disks and verify checksums.
+and metadata blocks from all devices and verify checksums. Automatically repair
+corrupted blocks if there's a correct copy available.
+
+NOTE: Scrub is not a filesystem checker (fsck) and does not verify nor repair
+structural damage in the filesystem.
+
+The user is supposed to run it manually or via a periodic system service. The
+recommended period is a month but could be less. The estimated device bandwidth
+utilization is about 80% on an idle filesystem. The IO priority class is by
+default 'idle' so background scrub should not significantly interfere with
+normal filesystem operation.
+
+The scrubbing status is recorded in '/var/lib/btrfs/' in textual files named
+'scrub.status.UUID' for a filesystem identified by the given UUID. (Progress
+state is communicated through a named pipe in file 'scrub.progress.UUID' in the
+same directory.) The status file is updated every 5 seconds. A resumed scrub
+will continue from the last saved position.
 
 SUBCOMMAND
 ----------
 *cancel* <path>|<device>::
-If a scrub is running on the filesystem identified by <path>, cancel it.
+If a scrub is running on the filesystem identified by 'path' cancel it.
 +
-Progress is saved in the scrub progress file and scrubbing can be resumed later
-using the scrub resume command.
-If a <device> is given, the corresponding filesystem is found and
-scrub cancel behaves as if it was called on that filesystem.
+If a 'device' is specified, the corresponding filesystem is found and
+*btrfs scrub cancel* behaves as if it was called on that filesystem.
 
 *resume* [-BdqrR] [-c <ioprio_class> -n <ioprio_classdata>] <path>|<device>::
-Resume a cancelled or interrupted scrub cycle on the filesystem identified by
-<path> or on a given <device>.
+Resume a cancelled or interrupted scrub on the filesystem identified by
+'path' or on a given 'device'.
 +
 Does not start a new scrub if the last scrub finished successfully.
 +
@@ -35,13 +49,10 @@ Does not start a new scrub if the last scrub finished successfully.
 see *scrub start*.
 
 *start* [-BdqrRf] [-c <ioprio_class> -n <ioprio_classdata>] <path>|<device>::
-Start a scrub on all devices of the filesystem identified by <path> or on
-a single <device>. If a scrub is already running, the new one fails.
+Start a scrub on all devices of the filesystem identified by 'path' or on
+a single 'device'. If a scrub is already running, the new one fails.
 +
 Without options, scrub is started as a background process.
-Progress can be obtained with the *scrub status* command. Scrubbing
-involves reading all data from all disks and verifying checksums. Errors are
-corrected along the way if possible.
 +
 The default IO priority of scrub is the idle class. The priority can be
 configured similar to the `ionice`(1) syntax using '-c' and '-n' options.
@@ -49,26 +60,28 @@ configured similar to the `ionice`(1) syntax using '-c' and '-n' options.
 `Options`
 +
 -B::::
-Do not background and print scrub statistics when finished.
+do not background and print scrub statistics when finished
 -d::::
-Print separate statistics for each device of the filesystem (-B only).
+print separate statistics for each device of the filesystem ('-B' only) at the end
 -q::::
-Quiet. Omit error messages and statistics.
+be quiet, omit error messages and statistics
 -r::::
-Read only mode. Do not attempt to correct anything.
+run in read-only mode, do not attempt to correct anything, can be run on a read-only
+filesystem
 -R::::
-Raw print mode. Print full data instead of summary.
+print raw statistics per-device instead of a summary
 -c <ioprio_class>::::
-Set IO priority class (see `ionice`(1) manpage).
+set IO priority class (see `ionice`(1) manpage)
 -n <ioprio_classdata>::::
-Set IO priority classdata (see `ionice`(1) manpage).
+set IO priority classdata (see `ionice`(1) manpage)
 -f::::
-Force starting new scrub even if a scrub is already running.
-This is useful when scrub status record file is damaged.
+force starting new scrub even if a scrub is already running,
+this can useful when scrub status file is damaged and reports a running
+scrub although it is not, but should not normally be necessary
 
 *status* [-d] <path>|<device>::
-Show status of a running scrub for the filesystem identified by <path> or
-for the specified <device>.
+Show status of a running scrub for the filesystem identified by 'path' or
+for the specified 'device'.
 +
 If no scrub is running, show statistics of the last finished or cancelled scrub
 for that filesystem or device.
@@ -76,12 +89,19 @@ for that filesystem or device.
 `Options`
 +
 -d::::
-Print separate statistics for each device of the filesystem.
+print separate statistics for each device of the filesystem
 
 EXIT STATUS
 -----------
 *btrfs scrub* returns a zero exit status if it succeeds. Non zero is
-returned in case of failure.
+returned in case of failure:
+
+1::::
+scrub couldn't be performed
+2::::
+there is nothing to resume
+3::::
+scrub found uncorrectable errors
 
 AVAILABILITY
 ------------
@@ -92,3 +112,4 @@ further details.
 SEE ALSO
 --------
 `mkfs.btrfs`(8),
+`ionice`(1)