atomic_t nr_async_submits;
        atomic_t async_submit_draining;
-       atomic_t nr_async_bios;
        atomic_t async_delalloc_pages;
        atomic_t open_ioctl_trans;
 
 
        atomic_set(&fs_info->nr_async_submits, 0);
        atomic_set(&fs_info->async_delalloc_pages, 0);
        atomic_set(&fs_info->async_submit_draining, 0);
-       atomic_set(&fs_info->nr_async_bios, 0);
        atomic_set(&fs_info->defrag_running, 0);
        atomic_set(&fs_info->qgroup_op_seq, 0);
        atomic_set(&fs_info->reada_works_cnt, 0);
 
        int again = 0;
        unsigned long num_run;
        unsigned long batch_run = 0;
-       unsigned long limit;
        unsigned long last_waited = 0;
        int force_reg = 0;
        int sync_pending = 0;
        blk_start_plug(&plug);
 
        bdi = device->bdev->bd_bdi;
-       limit = btrfs_async_submit_limit(fs_info);
-       limit = limit * 2 / 3;
 
 loop:
        spin_lock(&device->io_lock);
                pending = pending->bi_next;
                cur->bi_next = NULL;
 
-               /*
-                * atomic_dec_return implies a barrier for waitqueue_active
-                */
-               if (atomic_dec_return(&fs_info->nr_async_bios) < limit &&
-                   waitqueue_active(&fs_info->async_submit_wait))
-                       wake_up(&fs_info->async_submit_wait);
-
                BUG_ON(atomic_read(&cur->__bi_cnt) == 0);
 
                /*
                return;
        }
 
-       /*
-        * nr_async_bios allows us to reliably return congestion to the
-        * higher layers.  Otherwise, the async bio makes it appear we have
-        * made progress against dirty pages when we've really just put it
-        * on a queue for later
-        */
-       atomic_inc(&fs_info->nr_async_bios);
        WARN_ON(bio->bi_next);
        bio->bi_next = NULL;