Btrfs: unplug in the async bio submission threads
authorChris Mason <chris.mason@oracle.com>
Fri, 3 Apr 2009 14:32:58 +0000 (10:32 -0400)
committerChris Mason <chris.mason@oracle.com>
Fri, 3 Apr 2009 14:32:58 +0000 (10:32 -0400)
commitbedf762ba3a4b70295661fa70c29c1f18fe0f351
treef74718485798020ba97a5fb111f4794a1c8e945e
parentb765ead57da62cccf7fa21e00e6eed65e9df62b0
Btrfs: unplug in the async bio submission threads

Btrfs pages being written get set to writeback, and then may go through
a number of steps before they hit the block layer.  This includes compression,
checksumming and async bio submission.

The end result is that someone who writes a page and then does
wait_on_page_writeback is likely to unplug the queue before the bio they
cared about got there.

We could fix this by marking bios sync, or by doing more frequent unplugs,
but this commit just changes the async bio submission code to unplug
after it has processed all the bios for a device.  The async bio submission
does a fair job of collection bios, so this shouldn't be a huge problem
for reducing merging at the elevator.

For streaming O_DIRECT writes on a 5 drive array, it boosts performance
from 386MB/s to 460MB/s.

Thanks to Hisashi Hifumi for helping with this work.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/volumes.c