]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/btrfs/delalloc-space.c
Merge tag 'ceph-for-5.6-rc1' of https://github.com/ceph/ceph-client
[linux.git] / fs / btrfs / delalloc-space.c
index db9f2c58eb4af481158bb8a635a5f6a7872d4877..4cdac4d834f567505b19c6eceed1a9efaab79655 100644 (file)
@@ -307,7 +307,6 @@ int btrfs_delalloc_reserve_metadata(struct btrfs_inode *inode, u64 num_bytes)
        unsigned nr_extents;
        enum btrfs_reserve_flush_enum flush = BTRFS_RESERVE_FLUSH_ALL;
        int ret = 0;
-       bool delalloc_lock = true;
 
        /*
         * If we are a free space inode we need to not flush since we will be in
@@ -320,7 +319,6 @@ int btrfs_delalloc_reserve_metadata(struct btrfs_inode *inode, u64 num_bytes)
         */
        if (btrfs_is_free_space_inode(inode)) {
                flush = BTRFS_RESERVE_NO_FLUSH;
-               delalloc_lock = false;
        } else {
                if (current->journal_info)
                        flush = BTRFS_RESERVE_FLUSH_LIMIT;
@@ -329,9 +327,6 @@ int btrfs_delalloc_reserve_metadata(struct btrfs_inode *inode, u64 num_bytes)
                        schedule_timeout(1);
        }
 
-       if (delalloc_lock)
-               mutex_lock(&inode->delalloc_mutex);
-
        num_bytes = ALIGN(num_bytes, fs_info->sectorsize);
 
        /*
@@ -348,10 +343,12 @@ int btrfs_delalloc_reserve_metadata(struct btrfs_inode *inode, u64 num_bytes)
                                &qgroup_reserve);
        ret = btrfs_qgroup_reserve_meta_prealloc(root, qgroup_reserve, true);
        if (ret)
-               goto out_fail;
+               return ret;
        ret = btrfs_reserve_metadata_bytes(root, block_rsv, meta_reserve, flush);
-       if (ret)
-               goto out_qgroup;
+       if (ret) {
+               btrfs_qgroup_free_meta_prealloc(root, qgroup_reserve);
+               return ret;
+       }
 
        /*
         * Now we need to update our outstanding extents and csum bytes _first_
@@ -375,15 +372,7 @@ int btrfs_delalloc_reserve_metadata(struct btrfs_inode *inode, u64 num_bytes)
        block_rsv->qgroup_rsv_reserved += qgroup_reserve;
        spin_unlock(&block_rsv->lock);
 
-       if (delalloc_lock)
-               mutex_unlock(&inode->delalloc_mutex);
        return 0;
-out_qgroup:
-       btrfs_qgroup_free_meta_prealloc(root, qgroup_reserve);
-out_fail:
-       if (delalloc_lock)
-               mutex_unlock(&inode->delalloc_mutex);
-       return ret;
 }
 
 /**