'\" t .\" Title: btrfs-rescue .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 02/05/2021 .\" Manual: Btrfs Manual .\" Source: Btrfs v5.10.1 .\" Language: English .\" .TH "BTRFS\-RESCUE" "8" "02/05/2021" "Btrfs v5\&.10\&.1" "Btrfs Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" btrfs-rescue \- Recover a damaged btrfs filesystem .SH "SYNOPSIS" .sp \fBbtrfs rescue\fR \fI\fR \fI\fR .SH "DESCRIPTION" .sp \fBbtrfs rescue\fR is used to try to recover a damaged btrfs filesystem\&. .SH "SUBCOMMAND" .PP \fBchunk\-recover\fR [options] \fI\fR .RS 4 Recover the chunk tree by scanning the devices .sp \fBOptions\fR .PP \-y .RS 4 assume an answer of \fIyes\fR to all questions\&. .RE .PP \-h .RS 4 help\&. .RE .PP \-v .RS 4 (deprecated) alias for global \fI\-v\fR option .RE .RE .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBNote\fR .ps -1 .br .sp Since \fBchunk\-recover\fR will scan the whole device, it will be \fBVERY\fR slow especially executed on a large device\&. .sp .5v .RE .PP \fBfix\-device\-size\fR \fI\fR .RS 4 fix device size and super block total bytes values that are do not match .sp Kernel 4\&.11 starts to check the device size more strictly and this might mismatch the stored value of total bytes\&. See the exact error message below\&. Newer kernel will refuse to mount the filesystem where the values do not match\&. This error is not fatal and can be fixed\&. This command will fix the device size values if possible\&. .sp .if n \{\ .RS 4 .\} .nf BTRFS error (device sdb): super_total_bytes 92017859088384 mismatch with fs_devices total_rw_bytes 92017859094528 .fi .if n \{\ .RE .\} .sp The mismatch may also exhibit as a kernel warning: .sp .if n \{\ .RS 4 .\} .nf WARNING: CPU: 3 PID: 439 at fs/btrfs/ctree\&.h:1559 btrfs_update_device+0x1c5/0x1d0 [btrfs] .fi .if n \{\ .RE .\} .RE .PP \fBsuper\-recover\fR [options] \fI\fR .RS 4 Recover bad superblocks from good copies\&. .sp \fBOptions\fR .PP \-y .RS 4 assume an answer of \fIyes\fR to all questions\&. .RE .PP \-v .RS 4 (deprecated) alias for global \fI\-v\fR option .RE .RE .PP \fBzero\-log\fR \fI\fR .RS 4 clear the filesystem log tree .sp This command will clear the filesystem log tree\&. This may fix a specific set of problem when the filesystem mount fails due to the log replay\&. See below for sample stacktraces that may show up in system log\&. .sp The common case where this happens was fixed a long time ago, so it is unlikely that you will see this particular problem, but the command is kept around\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBNote\fR .ps -1 .br clearing the log may lead to loss of changes that were made since the last transaction commit\&. This may be up to 30 seconds (default commit period) or less if the commit was implied by other filesystem activity\&. .sp .5v .RE One can determine whether \fBzero\-log\fR is needed according to the kernel backtrace: .sp .if n \{\ .RS 4 .\} .nf ? replay_one_dir_item+0xb5/0xb5 [btrfs] ? walk_log_tree+0x9c/0x19d [btrfs] ? btrfs_read_fs_root_no_radix+0x169/0x1a1 [btrfs] ? btrfs_recover_log_trees+0x195/0x29c [btrfs] ? replay_one_dir_item+0xb5/0xb5 [btrfs] ? btree_read_extent_buffer_pages+0x76/0xbc [btrfs] ? open_ctree+0xff6/0x132c [btrfs] .fi .if n \{\ .RE .\} .sp If the errors are like above, then \fBzero\-log\fR should be used to clear the log and the filesystem may be mounted normally again\&. The keywords to look for are \fIopen_ctree\fR which says that it\(cqs during mount and function names that contain \fIreplay\fR, \fIrecover\fR or \fIlog_tree\fR\&. .RE .SH "EXIT STATUS" .sp \fBbtrfs rescue\fR returns a zero exit status if it succeeds\&. Non zero is returned in case of failure\&. .SH "AVAILABILITY" .sp \fBbtrfs\fR is part of btrfs\-progs\&. Please refer to the btrfs wiki \m[blue]\fBhttp://btrfs\&.wiki\&.kernel\&.org\fR\m[] for further details\&. .SH "SEE ALSO" .sp \fBmkfs\&.btrfs\fR(8), \fBbtrfs\-scrub\fR(8), \fBbtrfs\-check\fR(8)