|
@@ -875,12 +875,10 @@ static bool need_to_wait_for_sync(struct r1conf *conf, struct bio *bio)
|
|
|
if (conf->array_frozen || !bio)
|
|
|
wait = true;
|
|
|
else if (conf->barrier && bio_data_dir(bio) == WRITE) {
|
|
|
- if (conf->next_resync < RESYNC_WINDOW_SECTORS)
|
|
|
- wait = true;
|
|
|
- else if ((conf->next_resync - RESYNC_WINDOW_SECTORS
|
|
|
- >= bio_end_sector(bio)) ||
|
|
|
- (conf->next_resync + NEXT_NORMALIO_DISTANCE
|
|
|
- <= bio->bi_iter.bi_sector))
|
|
|
+ if ((conf->mddev->curr_resync_completed
|
|
|
+ >= bio_end_sector(bio)) ||
|
|
|
+ (conf->next_resync + NEXT_NORMALIO_DISTANCE
|
|
|
+ <= bio->bi_iter.bi_sector))
|
|
|
wait = false;
|
|
|
else
|
|
|
wait = true;
|
|
@@ -918,7 +916,7 @@ static sector_t wait_barrier(struct r1conf *conf, struct bio *bio)
|
|
|
|
|
|
if (bio && bio_data_dir(bio) == WRITE) {
|
|
|
if (bio->bi_iter.bi_sector >=
|
|
|
- conf->next_resync) {
|
|
|
+ conf->mddev->curr_resync_completed) {
|
|
|
if (conf->start_next_window == MaxSector)
|
|
|
conf->start_next_window =
|
|
|
conf->next_resync +
|