* Transfer bytes to our delayed refs rsv.
  *
  * @fs_info:   the filesystem
- * @src:       source block rsv to transfer from
  * @num_bytes: number of bytes to transfer
  *
- * This transfers up to the num_bytes amount from the src rsv to the
+ * This transfers up to the num_bytes amount, previously reserved, to the
  * delayed_refs_rsv.  Any extra bytes are returned to the space info.
  */
 void btrfs_migrate_to_delayed_refs_rsv(struct btrfs_fs_info *fs_info,
-                                      struct btrfs_block_rsv *src,
                                       u64 num_bytes)
 {
        struct btrfs_block_rsv *delayed_refs_rsv = &fs_info->delayed_refs_rsv;
        u64 to_free = 0;
 
-       spin_lock(&src->lock);
-       src->reserved -= num_bytes;
-       src->size -= num_bytes;
-       spin_unlock(&src->lock);
-
        spin_lock(&delayed_refs_rsv->lock);
        if (delayed_refs_rsv->size > delayed_refs_rsv->reserved) {
                u64 delta = delayed_refs_rsv->size -
 
 int btrfs_delayed_refs_rsv_refill(struct btrfs_fs_info *fs_info,
                                  enum btrfs_reserve_flush_enum flush);
 void btrfs_migrate_to_delayed_refs_rsv(struct btrfs_fs_info *fs_info,
-                                      struct btrfs_block_rsv *src,
                                       u64 num_bytes);
 bool btrfs_check_space_for_delayed_refs(struct btrfs_fs_info *fs_info);
 
 
                        reloc_reserved = true;
                }
 
-               ret = btrfs_block_rsv_add(fs_info, rsv, num_bytes, flush);
+               ret = btrfs_reserve_metadata_bytes(fs_info, rsv, num_bytes, flush);
                if (ret)
                        goto reserve_fail;
                if (delayed_refs_bytes) {
-                       btrfs_migrate_to_delayed_refs_rsv(fs_info, rsv,
-                                                         delayed_refs_bytes);
+                       btrfs_migrate_to_delayed_refs_rsv(fs_info, delayed_refs_bytes);
                        num_bytes -= delayed_refs_bytes;
                }
+               btrfs_block_rsv_add_bytes(rsv, num_bytes, true);
 
                if (rsv->space_info->force_alloc)
                        do_chunk_alloc = true;