enum btrfs_flush_state {
        FLUSH_DELAYED_ITEMS_NR  =       1,
        FLUSH_DELAYED_ITEMS     =       2,
-       FLUSH_DELALLOC          =       3,
-       FLUSH_DELALLOC_WAIT     =       4,
-       ALLOC_CHUNK             =       5,
-       COMMIT_TRANS            =       6,
+       FLUSH_DELAYED_REFS_NR   =       3,
+       FLUSH_DELAYED_REFS      =       4,
+       FLUSH_DELALLOC          =       5,
+       FLUSH_DELALLOC_WAIT     =       6,
+       ALLOC_CHUNK             =       7,
+       COMMIT_TRANS            =       8,
 };
 
 int btrfs_alloc_data_chunk_ondemand(struct btrfs_inode *inode, u64 bytes);
 
                shrink_delalloc(fs_info, num_bytes * 2, num_bytes,
                                state == FLUSH_DELALLOC_WAIT);
                break;
+       case FLUSH_DELAYED_REFS_NR:
+       case FLUSH_DELAYED_REFS:
+               trans = btrfs_join_transaction(root);
+               if (IS_ERR(trans)) {
+                       ret = PTR_ERR(trans);
+                       break;
+               }
+               if (state == FLUSH_DELAYED_REFS_NR)
+                       nr = calc_reclaim_items_nr(fs_info, num_bytes);
+               else
+                       nr = 0;
+               btrfs_run_delayed_refs(trans, nr);
+               btrfs_end_transaction(trans);
+               break;
        case ALLOC_CHUNK:
                trans = btrfs_join_transaction(root);
                if (IS_ERR(trans)) {
 
                { FLUSH_DELAYED_ITEMS,          "FLUSH_DELAYED_ITEMS"},         \
                { FLUSH_DELALLOC,               "FLUSH_DELALLOC"},              \
                { FLUSH_DELALLOC_WAIT,          "FLUSH_DELALLOC_WAIT"},         \
+               { FLUSH_DELAYED_REFS_NR,        "FLUSH_DELAYED_REFS_NR"},       \
+               { FLUSH_DELAYED_REFS,           "FLUSH_ELAYED_REFS"},           \
                { ALLOC_CHUNK,                  "ALLOC_CHUNK"},                 \
                { COMMIT_TRANS,                 "COMMIT_TRANS"})