diff --git a/fs/io-wq.c b/fs/io-wq.c
index a1c85458f021ab94da9681632fac20f37b4ec529..541c8a3e0bbb5154468dd84164fbb0319d8e8b91 100644
--- a/fs/io-wq.c
+++ b/fs/io-wq.c
@@ -429,6 +429,8 @@ static void io_worker_handle_work(struct io_worker *worker)
 		if (signal_pending(current))
 			flush_signals(current);
 
+		cond_resched();
+
 		spin_lock_irq(&worker->lock);
 		worker->cur_work = work;
 		spin_unlock_irq(&worker->lock);