spin_unlock_irqrestore(&pool->lock, flags);
/*
- * Wait for someone else to return an element to @pool.
- *
- * FIXME: this should be io_schedule(). The timeout is there as
- * a workaround for some DM problems in 2.6.18.
+ * Wait for someone else to return an element to @pool, but wake
+ * up occasionally as memory pressure might have reduced even
+ * and the normal allocation in alloc_fn could succeed even if
+ * no element was returned.
*/
io_schedule_timeout(5 * HZ);
finish_wait(&pool->wait, &wait);