Re: [PATCH 1/5] btrfs-progs: check: return value of check_extent_refs()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 10/06/2017 01:46 AM, David Sterba wrote:
On Wed, Sep 27, 2017 at 02:34:36PM +0800, Su Yue wrote:
In original check mode(without option "--repair"), check_extent_refs()
always returns 0.

Add a variable @error to record status while checking extents.
At the end of check_extent_refs(), let it return -EIO if @error is
nonzero.

Example:
$ btrfs check bad-extent-inline-ref-type.raw
Checking filesystem on bad-extent-inline-ref-type.raw
UUID: 1942d6fe-617b-4499-9982-cc8ffae5447f
checking extents
corrupt extent record: key 29360128 169 16384
ref mismatch on [29360128 16384] extent item 0, found 1
Backref 29360128 parent 5 root 5 not found in extent tree
backpointer mismatch on [29360128 16384]
bad extent [29360128, 29376512), type mismatch with chunk
checking free space cache
checking fs roots
checking csums
checking root refs
found 114688 bytes used, no error found
total csum bytes: 0
total tree bytes: 114688
total fs tree bytes: 32768
total extent tree bytes: 16384
btree space waste bytes: 109471
file data blocks allocated: 0
  referenced 0

Signed-off-by: Su Yue <suy.fnst@xxxxxxxxxxxxxx>

With this patch applied, the test fsck/006 fails, is that intentional?

Log from the last failing testcase:

checking extents
ref mismatch on [15474688 905216] extent item 1, found 4
Data backref 15474688 parent 31817728 owner 0 offset 0 num_refs 0 not found in extent tree
Incorrect local backref count on 15474688 parent 31817728 owner 0 offset 0 found 1 wanted 0 back 0x12d02f0
Data backref 15474688 parent 30883840 owner 0 offset 0 num_refs 0 not found in extent tree
Incorrect local backref count on 15474688 parent 30883840 owner 0 offset 0 found 1 wanted 0 back 0x12cd710
Data backref 15474688 parent 31326208 owner 0 offset 0 num_refs 0 not found in extent tree
Incorrect local backref count on 15474688 parent 31326208 owner 0 offset 0 found 1 wanted 0 back 0x12d2b80
backpointer mismatch on [15474688 905216]
ERROR: errors found in extent allocation tree or chunk allocation
checking free space cache
checking fs roots
checking csums
checking root refs
Checking filesystem on test.img
UUID: 3857c23d-4219-4600-a636-ac7707dc4ff3
cache and super generation don't match, space cache will be invalidated
found 6291456 bytes used, error(s) found
total csum bytes: 660
total tree bytes: 786432
total fs tree bytes: 688128
total extent tree bytes: 16384
btree space waste bytes: 459860
file data blocks allocated: 35536896
  referenced 25890816
failed: /mnt/big/dsterba/backup-labs-subv/gits/btrfs-progs/btrfs check test.img

I haven't tried with the other patches applied, so it might get actually fixed.
Even in that case, I'd rather keep the branches bisectable.

Understood, I will do it in next version.



--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux