btrfs: create read policy framework
authorAnand Jain <anand.jain@oracle.com>
Wed, 28 Oct 2020 13:14:46 +0000 (21:14 +0800)
committerDavid Sterba <dsterba@suse.com>
Tue, 8 Dec 2020 14:53:44 +0000 (15:53 +0100)
commit33fd2f714cde793b337b4ca6aaf3a8c68675d74f
tree2992c7c3fcd3a34394677cc7a82ea0ba3d0c1eca
parentaaefed207875a0f0c46c4a50dcd0aca0d56b9062
btrfs: create read policy framework

As of now, we use the pid method to read striped mirrored data, which
means process id determines the stripe id to read. This type of routing
typically helps in a system with many small independent processes tying
to read random data. On the other hand, the pid based read IO policy is
inefficient because if there is a single process trying to read a large
file, the overall disk bandwidth remains underutilized.

So this patch introduces a read policy framework so that we could add
more read policies, such as IO routing based on the device's wait-queue
or manual when we have a read-preferred device or a policy based on the
target storage caching.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c
fs/btrfs/volumes.h