• Stefan Behrens's avatar
    Btrfs: remove the block device pointer from the scrub context struct · a36cf8b8
    Stefan Behrens authored
    The block device is removed from the scrub context state structure.
    The scrub code as it is used for the device replace procedure reads
    the source data from whereever it is optimal. The source device might
    even be gone (disconnected, for instance due to a hardware failure).
    Or the drive can be so faulty so that the device replace procedure
    tries to avoid access to the faulty source drive as much as possible,
    and only if all other mirrors are damaged, as a last resort, the
    source disk is accessed.
    The modified scrub code operates as if it would handle the source
    drive and thereby generates an exact copy of the source disk on the
    target disk, even if the source disk is not present at all. Therefore
    the block device pointer to the source disk is removed in the scrub
    context struct and moved into the lower level scope of scrub_bio,
    fixup and page structures where the block device context is known.
    Signed-off-by: default avatarStefan Behrens <sbehrens@giantdisaster.de>
    Signed-off-by: default avatarChris Mason <chris.mason@fusionio.com>
    a36cf8b8
scrub.c 66 KB