aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r--fs/btrfs/disk-io.c8
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