summaryrefslogtreecommitdiff
path: root/block/blk-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'block/blk-core.c')
-rw-r--r--block/blk-core.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/block/blk-core.c b/block/blk-core.c
index 96433980aee4..767b456f925d 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1266,7 +1266,11 @@ retry:
trace_block_sleeprq(q, bio, rw_flags & 1);
spin_unlock_irq(q->queue_lock);
- io_schedule();
+ /*
+ * FIXME: this should be io_schedule(). The timeout is there as a
+ * workaround for some io timeout problems.
+ */
+ io_schedule_timeout(5*HZ);
/*
* After sleeping, we become a "batching" process and will be able
@@ -1782,6 +1786,11 @@ get_rq:
rw_flags |= REQ_SYNC;
/*
+ * Add in META/PRIO flags, if set, before we get to the IO scheduler
+ */
+ rw_flags |= (bio->bi_rw & (REQ_META | REQ_PRIO));
+
+ /*
* Grab a free request. This is might sleep but can not fail.
* Returns with the queue unlocked.
*/