mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-03 21:01:50 +00:00
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>
This commit is contained in:
parent
0221c81b1b
commit
1faa16d228
6 changed files with 100 additions and 82 deletions
|
@ -284,12 +284,12 @@ static wait_queue_head_t congestion_wqh[2] = {
|
|||
};
|
||||
|
||||
|
||||
void clear_bdi_congested(struct backing_dev_info *bdi, int rw)
|
||||
void clear_bdi_congested(struct backing_dev_info *bdi, int sync)
|
||||
{
|
||||
enum bdi_state bit;
|
||||
wait_queue_head_t *wqh = &congestion_wqh[rw];
|
||||
wait_queue_head_t *wqh = &congestion_wqh[sync];
|
||||
|
||||
bit = (rw == WRITE) ? BDI_write_congested : BDI_read_congested;
|
||||
bit = sync ? BDI_sync_congested : BDI_async_congested;
|
||||
clear_bit(bit, &bdi->state);
|
||||
smp_mb__after_clear_bit();
|
||||
if (waitqueue_active(wqh))
|
||||
|
@ -297,11 +297,11 @@ void clear_bdi_congested(struct backing_dev_info *bdi, int rw)
|
|||
}
|
||||
EXPORT_SYMBOL(clear_bdi_congested);
|
||||
|
||||
void set_bdi_congested(struct backing_dev_info *bdi, int rw)
|
||||
void set_bdi_congested(struct backing_dev_info *bdi, int sync)
|
||||
{
|
||||
enum bdi_state bit;
|
||||
|
||||
bit = (rw == WRITE) ? BDI_write_congested : BDI_read_congested;
|
||||
bit = sync ? BDI_sync_congested : BDI_async_congested;
|
||||
set_bit(bit, &bdi->state);
|
||||
}
|
||||
EXPORT_SYMBOL(set_bdi_congested);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue