diff options
| author | Chris Mason <chris.mason@oracle.com> | 2011-12-15 15:38:41 -0500 |
|---|---|---|
| committer | Chris Mason <chris.mason@oracle.com> | 2011-12-15 15:38:41 -0500 |
| commit | d85c8a6f1bc083279215ff6e79b7c292bf3ec905 (patch) | |
| tree | a816e64b9c9fa84ae3033ecf12a21a429a7301d9 | |
| parent | 567a45e917343c952806bb9f5c19aab0139bd519 (diff) | |
Btrfs: unplug every once and a while
The btrfs io submission threads can build up massive plug lists. This
keeps things more reasonable so we don't hand over huge dumps of IO at
once.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
| -rw-r--r-- | fs/btrfs/volumes.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 91ea57a1474a..f4b839fd3c9d 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c | |||
| @@ -295,6 +295,12 @@ loop_lock: | |||
| 295 | btrfs_requeue_work(&device->work); | 295 | btrfs_requeue_work(&device->work); |
| 296 | goto done; | 296 | goto done; |
| 297 | } | 297 | } |
| 298 | /* unplug every 64 requests just for good measure */ | ||
| 299 | if (batch_run % 64 == 0) { | ||
| 300 | blk_finish_plug(&plug); | ||
| 301 | blk_start_plug(&plug); | ||
| 302 | sync_pending = 0; | ||
| 303 | } | ||
| 298 | } | 304 | } |
| 299 | 305 | ||
| 300 | cond_resched(); | 306 | cond_resched(); |
