Commit 211588ad authored by Chris Mason's avatar Chris Mason

Btrfs: do some plugging in the submit_bio threads

The Btrfs submit bio threads have a small number of
threads responsible for pushing down bios we've collected
for a large number of devices.

Since we do all the bios for a single device at once,
we want to make sure we unplug and send down the bios
for each device as we're done processing them.

The new plugging API removed the btrfs code to
unplug while processing bios, this adds it back with
the new API.
Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent f0e615c3
...@@ -155,6 +155,15 @@ static noinline int run_scheduled_bios(struct btrfs_device *device) ...@@ -155,6 +155,15 @@ static noinline int run_scheduled_bios(struct btrfs_device *device)
unsigned long limit; unsigned long limit;
unsigned long last_waited = 0; unsigned long last_waited = 0;
int force_reg = 0; int force_reg = 0;
struct blk_plug plug;
/*
* this function runs all the bios we've collected for
* a particular device. We don't want to wander off to
* another device without first sending all of these down.
* So, setup a plug here and finish it off before we return
*/
blk_start_plug(&plug);
bdi = blk_get_backing_dev_info(device->bdev); bdi = blk_get_backing_dev_info(device->bdev);
fs_info = device->dev_root->fs_info; fs_info = device->dev_root->fs_info;
...@@ -294,6 +303,7 @@ static noinline int run_scheduled_bios(struct btrfs_device *device) ...@@ -294,6 +303,7 @@ static noinline int run_scheduled_bios(struct btrfs_device *device)
spin_unlock(&device->io_lock); spin_unlock(&device->io_lock);
done: done:
blk_finish_plug(&plug);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment