On 12/3/19 7:27 AM, waxhead wrote:
Anand Jain wrote:
I imagine that RAIDc4 for example could potentially give a grotesque
speed increase for parallel read operations once BTRFS learns to
distribute reads to the device with the least waitqueue / fastest
devices.
That exactly was the objective of the Readmirror patch in the ML.
It proposed a framework to change the readmirror policy as needed.
Thanks, Anand
Indeed. If I remember correctly your patch allowed for deterministic
reading from certain devices.
It provides a framework to configure the readmirror policies. And the
policies can be based on io-depth, pid, or manual for heterogeneous
devices with different latency.
As just a regular btrfs user the problem I
see with this is that you loose a "potential free scrub" that *might*
otherwise happen from often read data. On the other hand that is what
manual scrubbing is for anyway.
Ha ha.
When it comes to data and its reliability and availability we need
guarantee and only deterministic approach can provide it.
What you are asking for is to route the particular block to
the device which was not read before so to avoid scrubbing or to
make scrubbing more intelligent to scrub only old never read blocks
- this will be challenging we need to keep history of block and the
device it used for read - most likely a scope for the bpf based
external tools but definitely not with in kernel. With in kernel
we can create readmirror like framework so that external tool can
achieve it.
Thanks, Anand