diff options
Diffstat (limited to 'drivers/md/raid1.c')
| -rw-r--r-- | drivers/md/raid1.c | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 6df398e3a008..b2eae332e1a2 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -815,6 +815,17 @@ static void flush_pending_writes(struct r1conf *conf)  		bio = bio_list_get(&conf->pending_bio_list);  		conf->pending_count = 0;  		spin_unlock_irq(&conf->device_lock); + +		/* +		 * As this is called in a wait_event() loop (see freeze_array), +		 * current->state might be TASK_UNINTERRUPTIBLE which will +		 * cause a warning when we prepare to wait again.  As it is +		 * rare that this path is taken, it is perfectly safe to force +		 * us to go around the wait_event() loop again, so the warning +		 * is a false-positive.  Silence the warning by resetting +		 * thread state +		 */ +		__set_current_state(TASK_RUNNING);  		blk_start_plug(&plug);  		flush_bio_list(conf, bio);  		blk_finish_plug(&plug);  |