diff options
author | 2017-10-24 15:11:52 +0800 | |
---|---|---|
committer | 2017-11-01 21:32:23 -0700 | |
commit | 8db87912c9a8771c53b98845cd5516ea63b22e1e (patch) | |
tree | ea7749f6fbd11a75218e9710f8298c3fe5766d31 /tools/perf/scripts/python/export-to-postgresql.py | |
parent | md-cluster: Suspend writes in RAID10 if within range (diff) | |
download | linux-rng-8db87912c9a8771c53b98845cd5516ea63b22e1e.tar.xz linux-rng-8db87912c9a8771c53b98845cd5516ea63b22e1e.zip |
md-cluster: Use a small window for raid10 resync
Suspending the entire device for resync could take
too long. Resync in small chunks.
cluster's resync window is maintained in r10conf as
cluster_sync_low and cluster_sync_high, and processed
in raid10's sync_request(). If the current resync is
outside the cluster resync window:
1. Set the cluster_sync_low to curr_resync_completed.
2. Set cluster_sync_high to cluster_sync_low + stripe
size.
3. Send a message to all nodes so they may add it in
their suspension list.
Note:
We only support "near" raid10 so far, resync a far or
offset raid10 array could have trouble. So raid10_run
checks the layout of clustered raid10, it will refuse
to run if the layout is not correct.
With the "near" layout we process one stripe at a time
progressing monotonically through the address space.
So we can have a sliding window of whole-stripes which
moves through the array suspending IO on other nodes,
and both resync which uses array addresses and recovery
which uses device addresses can stay within this window.
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions