• Stefan Behrens's avatar
    Btrfs: fix that repair code is spuriously executed for transid failures · 256dd1bb
    Stefan Behrens authored
    If verify_parent_transid() fails for all mirrors, the current code
    calls repair_io_failure() anyway which means:
    - that the disk block is rewritten without repairing anything and
    - that a kernel log message is printed which misleadingly claims
      that a read error was corrected.
    
    This is an example:
    parent transid verify failed on 615015833600 wanted 110423 found 110424
    parent transid verify failed on 615015833600 wanted 110423 found 110424
    btrfs read error corrected: ino 1 off 615015833600 (dev /dev/...)
    
    It is wrong to ignore the results from verify_parent_transid() and to
    call repair_eb_io_failure() when the verification of the transids failed.
    This commit fixes the issue.
    Signed-off-by: default avatarStefan Behrens <sbehrens@giantdisaster.de>
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    256dd1bb
disk-io.c 103 KB