diff options
author | Chris Mason <chris.mason@oracle.com> | 2010-03-10 23:33:32 +0300 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2010-03-15 18:00:09 +0300 |
commit | 51684082b11c304829ea22193d4d96a5b1663b97 (patch) | |
tree | cfe13e6789c90a817392af490b23a89e7924cbaf /fs/btrfs | |
parent | 4849f01d153be0f52b8191ee1be0ce492aa96811 (diff) | |
download | linux-51684082b11c304829ea22193d4d96a5b1663b97.tar.xz |
Btrfs: run the backing dev more often in the submit_bio helper
The submit_bio helper thread can decide to loop back around to
service more bios. This commit forces it to unplug first, which helps
reduce the latency seen by submitters.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/volumes.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 41ecbb2347f2..ace2e8d7bbcd 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -325,16 +325,6 @@ loop_lock: num_sync_run = 0; blk_run_backing_dev(bdi, NULL); } - - cond_resched(); - if (again) - goto loop; - - spin_lock(&device->io_lock); - if (device->pending_bios.head || device->pending_sync_bios.head) - goto loop_lock; - spin_unlock(&device->io_lock); - /* * IO has already been through a long path to get here. Checksumming, * async helper threads, perhaps compression. We've done a pretty @@ -346,6 +336,16 @@ loop_lock: * cared about found its way down here. */ blk_run_backing_dev(bdi, NULL); + + cond_resched(); + if (again) + goto loop; + + spin_lock(&device->io_lock); + if (device->pending_bios.head || device->pending_sync_bios.head) + goto loop_lock; + spin_unlock(&device->io_lock); + done: return 0; } |