diff options
author | NeilBrown <neilb@suse.de> | 2011-04-18 04:25:41 -0400 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-04-18 04:25:41 -0400 |
commit | e1dfa0a29737142c32f00a3bac0f609dc85b4a82 (patch) | |
tree | 1af906cc5e959803e7d5ea0e56fb69b56754501a | |
parent | 99e22598e9a8e0a996d69c8c0f6b7027cb57720a (diff) |
md: use new plugging interface for RAID IO.
md/raid submits a lot of IO from the various raid threads.
So adding start/finish plug calls to those so that some
plugging happens.
Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r-- | drivers/md/raid1.c | 5 | ||||
-rw-r--r-- | drivers/md/raid10.c | 3 | ||||
-rw-r--r-- | drivers/md/raid5.c | 3 |
3 files changed, 10 insertions, 1 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index c2a21ae56d9..5449cd5e314 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
@@ -1516,9 +1516,11 @@ static void raid1d(mddev_t *mddev) | |||
1516 | conf_t *conf = mddev->private; | 1516 | conf_t *conf = mddev->private; |
1517 | struct list_head *head = &conf->retry_list; | 1517 | struct list_head *head = &conf->retry_list; |
1518 | mdk_rdev_t *rdev; | 1518 | mdk_rdev_t *rdev; |
1519 | struct blk_plug plug; | ||
1519 | 1520 | ||
1520 | md_check_recovery(mddev); | 1521 | md_check_recovery(mddev); |
1521 | 1522 | ||
1523 | blk_start_plug(&plug); | ||
1522 | for (;;) { | 1524 | for (;;) { |
1523 | char b[BDEVNAME_SIZE]; | 1525 | char b[BDEVNAME_SIZE]; |
1524 | 1526 | ||
@@ -1593,6 +1595,7 @@ static void raid1d(mddev_t *mddev) | |||
1593 | } | 1595 | } |
1594 | cond_resched(); | 1596 | cond_resched(); |
1595 | } | 1597 | } |
1598 | blk_finish_plug(&plug); | ||
1596 | } | 1599 | } |
1597 | 1600 | ||
1598 | 1601 | ||
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 2da83d56659..c8e5dac5d69 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
@@ -1640,9 +1640,11 @@ static void raid10d(mddev_t *mddev) | |||
1640 | conf_t *conf = mddev->private; | 1640 | conf_t *conf = mddev->private; |
1641 | struct list_head *head = &conf->retry_list; | 1641 | struct list_head *head = &conf->retry_list; |
1642 | mdk_rdev_t *rdev; | 1642 | mdk_rdev_t *rdev; |
1643 | struct blk_plug plug; | ||
1643 | 1644 | ||
1644 | md_check_recovery(mddev); | 1645 | md_check_recovery(mddev); |
1645 | 1646 | ||
1647 | blk_start_plug(&plug); | ||
1646 | for (;;) { | 1648 | for (;;) { |
1647 | char b[BDEVNAME_SIZE]; | 1649 | char b[BDEVNAME_SIZE]; |
1648 | 1650 | ||
@@ -1716,6 +1718,7 @@ static void raid10d(mddev_t *mddev) | |||
1716 | } | 1718 | } |
1717 | cond_resched(); | 1719 | cond_resched(); |
1718 | } | 1720 | } |
1721 | blk_finish_plug(&plug); | ||
1719 | } | 1722 | } |
1720 | 1723 | ||
1721 | 1724 | ||
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index e867ee42b15..ce6960b1c68 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -4478,11 +4478,13 @@ static void raid5d(mddev_t *mddev) | |||
4478 | struct stripe_head *sh; | 4478 | struct stripe_head *sh; |
4479 | raid5_conf_t *conf = mddev->private; | 4479 | raid5_conf_t *conf = mddev->private; |
4480 | int handled; | 4480 | int handled; |
4481 | struct blk_plug plug; | ||
4481 | 4482 | ||
4482 | pr_debug("+++ raid5d active\n"); | 4483 | pr_debug("+++ raid5d active\n"); |
4483 | 4484 | ||
4484 | md_check_recovery(mddev); | 4485 | md_check_recovery(mddev); |
4485 | 4486 | ||
4487 | blk_start_plug(&plug); | ||
4486 | handled = 0; | 4488 | handled = 0; |
4487 | spin_lock_irq(&conf->device_lock); | 4489 | spin_lock_irq(&conf->device_lock); |
4488 | while (1) { | 4490 | while (1) { |
@@ -4525,6 +4527,7 @@ static void raid5d(mddev_t *mddev) | |||
4525 | spin_unlock_irq(&conf->device_lock); | 4527 | spin_unlock_irq(&conf->device_lock); |
4526 | 4528 | ||
4527 | async_tx_issue_pending_all(); | 4529 | async_tx_issue_pending_all(); |
4530 | blk_finish_plug(&plug); | ||
4528 | 4531 | ||
4529 | pr_debug("--- raid5d inactive\n"); | 4532 | pr_debug("--- raid5d inactive\n"); |
4530 | } | 4533 | } |