aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2015-02-19 00:04:40 -0500
committerNeilBrown <neilb@suse.de>2015-04-21 18:00:40 -0400
commit09314799e4f0589e52bafcd0ca3556c60468bc0e (patch)
tree012392cba7377a5db8c4c9e4c639337a6501cb46
parent50c37b136a3807eda44afe16529b5af701ec49f5 (diff)
md: remove 'go_faster' option from ->sync_request()
This option is not well justified and testing suggests that it hardly ever makes any difference. The comment suggests there might be a need to wait for non-resync activity indicated by ->nr_waiting, however raise_barrier() already waits for all of that. So just remove it to simplify reasoning about speed limiting. This allows us to remove a 'FIXME' comment from raid5.c as that never used the flag. Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--drivers/md/md.c5
-rw-r--r--drivers/md/md.h2
-rw-r--r--drivers/md/raid1.c9
-rw-r--r--drivers/md/raid10.c8
-rw-r--r--drivers/md/raid5.c3
5 files changed, 6 insertions, 21 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 3724a29eaf0e..3b9b032aa006 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -7820,8 +7820,7 @@ void md_do_sync(struct md_thread *thread)
7820 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) 7820 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery))
7821 break; 7821 break;
7822 7822
7823 sectors = mddev->pers->sync_request(mddev, j, &skipped, 7823 sectors = mddev->pers->sync_request(mddev, j, &skipped);
7824 currspeed < speed_min(mddev));
7825 if (sectors == 0) { 7824 if (sectors == 0) {
7826 set_bit(MD_RECOVERY_INTR, &mddev->recovery); 7825 set_bit(MD_RECOVERY_INTR, &mddev->recovery);
7827 break; 7826 break;
@@ -7898,7 +7897,7 @@ void md_do_sync(struct md_thread *thread)
7898 wait_event(mddev->recovery_wait, !atomic_read(&mddev->recovery_active)); 7897 wait_event(mddev->recovery_wait, !atomic_read(&mddev->recovery_active));
7899 7898
7900 /* tell personality that we are finished */ 7899 /* tell personality that we are finished */
7901 mddev->pers->sync_request(mddev, max_sectors, &skipped, 1); 7900 mddev->pers->sync_request(mddev, max_sectors, &skipped);
7902 7901
7903 if (mddev_is_clustered(mddev)) 7902 if (mddev_is_clustered(mddev))
7904 md_cluster_ops->resync_finish(mddev); 7903 md_cluster_ops->resync_finish(mddev);
diff --git a/drivers/md/md.h b/drivers/md/md.h
index ecdce36ec6b8..4046a6c6f223 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -506,7 +506,7 @@ struct md_personality
506 int (*hot_add_disk) (struct mddev *mddev, struct md_rdev *rdev); 506 int (*hot_add_disk) (struct mddev *mddev, struct md_rdev *rdev);
507 int (*hot_remove_disk) (struct mddev *mddev, struct md_rdev *rdev); 507 int (*hot_remove_disk) (struct mddev *mddev, struct md_rdev *rdev);
508 int (*spare_active) (struct mddev *mddev); 508 int (*spare_active) (struct mddev *mddev);
509 sector_t (*sync_request)(struct mddev *mddev, sector_t sector_nr, int *skipped, int go_faster); 509 sector_t (*sync_request)(struct mddev *mddev, sector_t sector_nr, int *skipped);
510 int (*resize) (struct mddev *mddev, sector_t sectors); 510 int (*resize) (struct mddev *mddev, sector_t sectors);
511 sector_t (*size) (struct mddev *mddev, sector_t sectors, int raid_disks); 511 sector_t (*size) (struct mddev *mddev, sector_t sectors, int raid_disks);
512 int (*check_reshape) (struct mddev *mddev); 512 int (*check_reshape) (struct mddev *mddev);
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 4efa50186a2a..9157a29c8dbf 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -2480,7 +2480,7 @@ static int init_resync(struct r1conf *conf)
2480 * that can be installed to exclude normal IO requests. 2480 * that can be installed to exclude normal IO requests.
2481 */ 2481 */
2482 2482
2483static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipped, int go_faster) 2483static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipped)
2484{ 2484{
2485 struct r1conf *conf = mddev->private; 2485 struct r1conf *conf = mddev->private;
2486 struct r1bio *r1_bio; 2486 struct r1bio *r1_bio;
@@ -2533,13 +2533,6 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipp
2533 *skipped = 1; 2533 *skipped = 1;
2534 return sync_blocks; 2534 return sync_blocks;
2535 } 2535 }
2536 /*
2537 * If there is non-resync activity waiting for a turn,
2538 * and resync is going fast enough,
2539 * then let it though before starting on this new sync request.
2540 */
2541 if (!go_faster && conf->nr_waiting)
2542 msleep_interruptible(1000);
2543 2536
2544 bitmap_cond_end_sync(mddev->bitmap, sector_nr); 2537 bitmap_cond_end_sync(mddev->bitmap, sector_nr);
2545 r1_bio = mempool_alloc(conf->r1buf_pool, GFP_NOIO); 2538 r1_bio = mempool_alloc(conf->r1buf_pool, GFP_NOIO);
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index a7196c49d15d..e793ab6b3570 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -2889,7 +2889,7 @@ static int init_resync(struct r10conf *conf)
2889 */ 2889 */
2890 2890
2891static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, 2891static sector_t sync_request(struct mddev *mddev, sector_t sector_nr,
2892 int *skipped, int go_faster) 2892 int *skipped)
2893{ 2893{
2894 struct r10conf *conf = mddev->private; 2894 struct r10conf *conf = mddev->private;
2895 struct r10bio *r10_bio; 2895 struct r10bio *r10_bio;
@@ -2994,12 +2994,6 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr,
2994 if (conf->geo.near_copies < conf->geo.raid_disks && 2994 if (conf->geo.near_copies < conf->geo.raid_disks &&
2995 max_sector > (sector_nr | chunk_mask)) 2995 max_sector > (sector_nr | chunk_mask))
2996 max_sector = (sector_nr | chunk_mask) + 1; 2996 max_sector = (sector_nr | chunk_mask) + 1;
2997 /*
2998 * If there is non-resync activity waiting for us then
2999 * put in a delay to throttle resync.
3000 */
3001 if (!go_faster && conf->nr_waiting)
3002 msleep_interruptible(1000);
3003 2997
3004 /* Again, very different code for resync and recovery. 2998 /* Again, very different code for resync and recovery.
3005 * Both must result in an r10bio with a list of bios that 2999 * Both must result in an r10bio with a list of bios that
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index cd2f96b2c572..022a0d99e110 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -5050,8 +5050,7 @@ ret:
5050 return reshape_sectors; 5050 return reshape_sectors;
5051} 5051}
5052 5052
5053/* FIXME go_faster isn't used */ 5053static inline sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipped)
5054static inline sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipped, int go_faster)
5055{ 5054{
5056 struct r5conf *conf = mddev->private; 5055 struct r5conf *conf = mddev->private;
5057 struct stripe_head *sh; 5056 struct stripe_head *sh;