diff options
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r-- | fs/btrfs/disk-io.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index bbba14b629d..6a218f792e5 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -487,9 +487,15 @@ int btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct inode *inode, | |||
487 | atomic_inc(&fs_info->nr_async_submits); | 487 | atomic_inc(&fs_info->nr_async_submits); |
488 | btrfs_queue_worker(&fs_info->workers, &async->work); | 488 | btrfs_queue_worker(&fs_info->workers, &async->work); |
489 | 489 | ||
490 | wait_event_timeout(fs_info->async_submit_wait, | 490 | if (atomic_read(&fs_info->nr_async_submits) > limit) { |
491 | wait_event_timeout(fs_info->async_submit_wait, | ||
491 | (atomic_read(&fs_info->nr_async_submits) < limit), | 492 | (atomic_read(&fs_info->nr_async_submits) < limit), |
492 | HZ/10); | 493 | HZ/10); |
494 | |||
495 | wait_event_timeout(fs_info->async_submit_wait, | ||
496 | (atomic_read(&fs_info->nr_async_bios) < limit), | ||
497 | HZ/10); | ||
498 | } | ||
493 | return 0; | 499 | return 0; |
494 | } | 500 | } |
495 | 501 | ||