Make writes to md/safe_mode_delay immediately effective.
If we reduce the 'safe_mode_delay', it could still wait for the old delay to completely expire before doing anything about safe_mode. Thus the effect if the change is delayed. To make the effect more immediate, run the timeout function immediately if the delay was reduced. This may cause it to run slightly earlier that required, but that is the safer option. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
2b12a4c524
commit
19052c0e85
|
@ -2393,6 +2393,8 @@ static void analyze_sbs(mddev_t * mddev)
|
|||
|
||||
}
|
||||
|
||||
static void md_safemode_timeout(unsigned long data);
|
||||
|
||||
static ssize_t
|
||||
safe_delay_show(mddev_t *mddev, char *page)
|
||||
{
|
||||
|
@ -2432,9 +2434,12 @@ safe_delay_store(mddev_t *mddev, const char *cbuf, size_t len)
|
|||
if (msec == 0)
|
||||
mddev->safemode_delay = 0;
|
||||
else {
|
||||
unsigned long old_delay = mddev->safemode_delay;
|
||||
mddev->safemode_delay = (msec*HZ)/1000;
|
||||
if (mddev->safemode_delay == 0)
|
||||
mddev->safemode_delay = 1;
|
||||
if (mddev->safemode_delay < old_delay)
|
||||
md_safemode_timeout((unsigned long)mddev);
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue