|
@@ -900,6 +900,18 @@ static void flush_pending_writes(struct r10conf *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 any pending bitmap writes to disk
|
|
|
* before proceeding w/ I/O */
|