• Chris Mason's avatar
    Btrfs: Use the extent map cache to find the logical disk block during data retries · 3b951516
    Chris Mason authored
    The data read retry code needs to find the logical disk block before it
    can resubmit new bios.  But, finding this block isn't allowed to take
    the fs_mutex because that will deadlock with a number of different callers.
    This changes the retry code to use the extent map cache instead, but
    that requires the extent map cache to have the extent we're looking for.
    This is a problem because btrfs_drop_extent_cache just drops the entire
    extent instead of the little tiny part it is invalidating.
    The bulk of the code in this patch changes btrfs_drop_extent_cache to
    invalidate only a portion of the extent cache, and changes btrfs_get_extent
    to deal with the results.
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>