diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2009-04-06 08:48:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-06 11:04:53 -0400 |
commit | 1faa16d22877f4839bd433547d770c676d1d964c (patch) | |
tree | 9a0d50be1ef0358c1f53d7107413100904e7d526 /mm/backing-dev.c | |
parent | 0221c81b1b8eb0cbb6b30a0ced52ead32d2b4e4c (diff) |
block: change the request allocation/congestion logic to be sync/async based
This makes sure that we never wait on async IO for sync requests, instead
of doing the split on writes vs reads.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/backing-dev.c')
-rw-r--r-- | mm/backing-dev.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c index be68c956a660..493b468a5035 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c | |||
@@ -284,12 +284,12 @@ static wait_queue_head_t congestion_wqh[2] = { | |||
284 | }; | 284 | }; |
285 | 285 | ||
286 | 286 | ||
287 | void clear_bdi_congested(struct backing_dev_info *bdi, int rw) | 287 | void clear_bdi_congested(struct backing_dev_info *bdi, int sync) |
288 | { | 288 | { |
289 | enum bdi_state bit; | 289 | enum bdi_state bit; |
290 | wait_queue_head_t *wqh = &congestion_wqh[rw]; | 290 | wait_queue_head_t *wqh = &congestion_wqh[sync]; |
291 | 291 | ||
292 | bit = (rw == WRITE) ? BDI_write_congested : BDI_read_congested; | 292 | bit = sync ? BDI_sync_congested : BDI_async_congested; |
293 | clear_bit(bit, &bdi->state); | 293 | clear_bit(bit, &bdi->state); |
294 | smp_mb__after_clear_bit(); | 294 | smp_mb__after_clear_bit(); |
295 | if (waitqueue_active(wqh)) | 295 | if (waitqueue_active(wqh)) |
@@ -297,11 +297,11 @@ void clear_bdi_congested(struct backing_dev_info *bdi, int rw) | |||
297 | } | 297 | } |
298 | EXPORT_SYMBOL(clear_bdi_congested); | 298 | EXPORT_SYMBOL(clear_bdi_congested); |
299 | 299 | ||
300 | void set_bdi_congested(struct backing_dev_info *bdi, int rw) | 300 | void set_bdi_congested(struct backing_dev_info *bdi, int sync) |
301 | { | 301 | { |
302 | enum bdi_state bit; | 302 | enum bdi_state bit; |
303 | 303 | ||
304 | bit = (rw == WRITE) ? BDI_write_congested : BDI_read_congested; | 304 | bit = sync ? BDI_sync_congested : BDI_async_congested; |
305 | set_bit(bit, &bdi->state); | 305 | set_bit(bit, &bdi->state); |
306 | } | 306 | } |
307 | EXPORT_SYMBOL(set_bdi_congested); | 307 | EXPORT_SYMBOL(set_bdi_congested); |