• Filipe Manana's avatar
    Btrfs: fix race setting block group back to RW mode during device replace · 1a1a8b73
    Filipe Manana authored
    After it finishes processing a device extent, the device replace code sets
    back the block group to RW mode and then after that it sets the left cursor
    to match the logical end address of the block group, so that future writes
    into extents belonging to the block group go both the source (old) and
    target (new) devices. However from the moment we turn the block group
    back to RW mode we have a short time window, that lasts until we update
    the left cursor's value, where extents can be allocated from the block
    group and written to, in which case they will not be copied/written to
    the target (new) device. Fix this by updating the left cursor's value
    before turning the block group back to RW mode.
    Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
    Reviewed-by: default avatarJosef Bacik <jbacik@fb.com>
scrub.c 116 KB