On Fri, 23 Sep 2011 10:40:45 +0100 "Daniel P. Berrange" <berrange@xxxxxxxxxx> wrote: > From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> > > The md_notify_reboot() method includes a call to mdelay(1000), > to deal with "exotic SCSI devices" which are too volatile on > reboot. The delay is unconditional. Even if the machine does > not have any block devices, let alone MD devices, the kernel > shutdown sequence is slowed down. > > 1 second does not matter much with physical hardware, but with > certain virtualization use cases any wasted time in the bootup > & shutdown sequence counts for alot. > > * drivers/md/md.c: md_notify_reboot() - only impose a delay if > there was at least one MD device to be stopped during reboot > > Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> queued for next merge window .... or maybe even next -rc if I'm feeling brave. Thanks, NeilBrown > --- > drivers/md/md.c | 8 ++++++-- > 1 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/md/md.c b/drivers/md/md.c > index 5404b22..ef7ad8d 100644 > --- a/drivers/md/md.c > +++ b/drivers/md/md.c > @@ -8059,12 +8059,13 @@ static int md_notify_reboot(struct notifier_block *this, > { > struct list_head *tmp; > mddev_t *mddev; > + int need_delay = 0; > > if ((code == SYS_DOWN) || (code == SYS_HALT) || (code == SYS_POWER_OFF)) { > > printk(KERN_INFO "md: stopping all md devices.\n"); > > - for_each_mddev(mddev, tmp) > + for_each_mddev(mddev, tmp) { > if (mddev_trylock(mddev)) { > /* Force a switch to readonly even array > * appears to still be in use. Hence > @@ -8073,13 +8074,16 @@ static int md_notify_reboot(struct notifier_block *this, > md_set_readonly(mddev, 100); > mddev_unlock(mddev); > } > + need_delay = 1; > + } > /* > * certain more exotic SCSI devices are known to be > * volatile wrt too early system reboots. While the > * right place to handle this issue is the given > * driver, we do want to have a safe RAID driver ... > */ > - mdelay(1000*1); > + if (need_delay) > + mdelay(1000*1); > } > return NOTIFY_DONE; > }
Attachment:
signature.asc
Description: PGP signature