From ddcb2df8610b4155b34884b6f11ae49d49255a22 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Tue, 24 Apr 2012 10:23:14 +1000 Subject: [PATCH] --- yaml --- r: 299598 b: refs/heads/master c: ed209584c38fb74b7eecc03e5b1bfe674e591bd8 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/md/md.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 05d8e94ea200..704a60aed4d0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a9ad8526bb1af0741a5c0e01155dac08e7bdde60 +refs/heads/master: ed209584c38fb74b7eecc03e5b1bfe674e591bd8 diff --git a/trunk/drivers/md/md.c b/trunk/drivers/md/md.c index b572e1e386ce..8beb19c3bb44 100644 --- a/trunk/drivers/md/md.c +++ b/trunk/drivers/md/md.c @@ -7560,14 +7560,14 @@ void md_check_recovery(struct mddev *mddev) * any transients in the value of "sync_action". */ set_bit(MD_RECOVERY_RUNNING, &mddev->recovery); - clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery); /* Clear some bits that don't mean anything, but * might be left set */ clear_bit(MD_RECOVERY_INTR, &mddev->recovery); clear_bit(MD_RECOVERY_DONE, &mddev->recovery); - if (test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) + if (!test_and_clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery) || + test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) goto unlock; /* no recovery is running. * remove any failed drives, then