mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
99e22598e9
commit
e1dfa0a297
|
@ -1516,9 +1516,11 @@ static void raid1d(mddev_t *mddev)
|
|||
conf_t *conf = mddev->private;
|
||||
struct list_head *head = &conf->retry_list;
|
||||
mdk_rdev_t *rdev;
|
||||
struct blk_plug plug;
|
||||
|
||||
md_check_recovery(mddev);
|
||||
|
||||
|
||||
blk_start_plug(&plug);
|
||||
for (;;) {
|
||||
char b[BDEVNAME_SIZE];
|
||||
|
||||
|
@ -1593,6 +1595,7 @@ static void raid1d(mddev_t *mddev)
|
|||
}
|
||||
cond_resched();
|
||||
}
|
||||
blk_finish_plug(&plug);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1640,9 +1640,11 @@ static void raid10d(mddev_t *mddev)
|
|||
conf_t *conf = mddev->private;
|
||||
struct list_head *head = &conf->retry_list;
|
||||
mdk_rdev_t *rdev;
|
||||
struct blk_plug plug;
|
||||
|
||||
md_check_recovery(mddev);
|
||||
|
||||
blk_start_plug(&plug);
|
||||
for (;;) {
|
||||
char b[BDEVNAME_SIZE];
|
||||
|
||||
|
@ -1716,6 +1718,7 @@ static void raid10d(mddev_t *mddev)
|
|||
}
|
||||
cond_resched();
|
||||
}
|
||||
blk_finish_plug(&plug);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -4478,11 +4478,13 @@ static void raid5d(mddev_t *mddev)
|
|||
struct stripe_head *sh;
|
||||
raid5_conf_t *conf = mddev->private;
|
||||
int handled;
|
||||
struct blk_plug plug;
|
||||
|
||||
pr_debug("+++ raid5d active\n");
|
||||
|
||||
md_check_recovery(mddev);
|
||||
|
||||
blk_start_plug(&plug);
|
||||
handled = 0;
|
||||
spin_lock_irq(&conf->device_lock);
|
||||
while (1) {
|
||||
|
@ -4525,6 +4527,7 @@ static void raid5d(mddev_t *mddev)
|
|||
spin_unlock_irq(&conf->device_lock);
|
||||
|
||||
async_tx_issue_pending_all();
|
||||
blk_finish_plug(&plug);
|
||||
|
||||
pr_debug("--- raid5d inactive\n");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue