Commit 8712e553 authored by NeilBrown's avatar NeilBrown Committed by Linus Torvalds

[PATCH] md: make sure mdthreads will always respond to kthread_stop

There are still a couple of cases where md threads (the resync/recovery
thread) is not interruptible since the change to use kthreads.  All places
there it tests "signal_pending", it should also test kthread_should_stop,
as with this patch.
Signed-off-by: default avatarNeil Brown <neilb@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 6693e74a
...@@ -3568,7 +3568,8 @@ static void md_do_sync(mddev_t *mddev) ...@@ -3568,7 +3568,8 @@ static void md_do_sync(mddev_t *mddev)
mddev->curr_resync = 2; mddev->curr_resync = 2;
try_again: try_again:
if (signal_pending(current)) { if (signal_pending(current) ||
kthread_should_stop()) {
flush_signals(current); flush_signals(current);
set_bit(MD_RECOVERY_INTR, &mddev->recovery); set_bit(MD_RECOVERY_INTR, &mddev->recovery);
goto skip; goto skip;
...@@ -3590,8 +3591,9 @@ static void md_do_sync(mddev_t *mddev) ...@@ -3590,8 +3591,9 @@ static void md_do_sync(mddev_t *mddev)
*/ */
continue; continue;
prepare_to_wait(&resync_wait, &wq, TASK_INTERRUPTIBLE); prepare_to_wait(&resync_wait, &wq, TASK_INTERRUPTIBLE);
if (!signal_pending(current) if (!signal_pending(current) &&
&& mddev2->curr_resync >= mddev->curr_resync) { !kthread_should_stop() &&
mddev2->curr_resync >= mddev->curr_resync) {
printk(KERN_INFO "md: delaying resync of %s" printk(KERN_INFO "md: delaying resync of %s"
" until %s has finished resync (they" " until %s has finished resync (they"
" share one or more physical units)\n", " share one or more physical units)\n",
...@@ -3697,7 +3699,7 @@ static void md_do_sync(mddev_t *mddev) ...@@ -3697,7 +3699,7 @@ static void md_do_sync(mddev_t *mddev)
} }
if (signal_pending(current)) { if (signal_pending(current) || kthread_should_stop()) {
/* /*
* got a signal, exit. * got a signal, exit.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment