diff options
author | Guoqing Jiang <gqjiang@suse.com> | 2017-10-24 09:11:52 +0200 |
---|---|---|
committer | Shaohua Li <shli@fb.com> | 2017-11-02 05:32:23 +0100 |
commit | 8db87912c9a8771c53b98845cd5516ea63b22e1e (patch) | |
tree | ea7749f6fbd11a75218e9710f8298c3fe5766d31 /drivers/vme | |
parent | md-cluster: Suspend writes in RAID10 if within range (diff) | |
download | linux-8db87912c9a8771c53b98845cd5516ea63b22e1e.tar.xz linux-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 'drivers/vme')
0 files changed, 0 insertions, 0 deletions