]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
Btrfs: don't try to commit in btrfs_block_rsv_check
authorJosef Bacik <josef@redhat.com>
Mon, 8 Aug 2011 17:33:21 +0000 (13:33 -0400)
committerJosef Bacik <josef@redhat.com>
Wed, 19 Oct 2011 19:12:35 +0000 (15:12 -0400)
We will try and reserve metadata bytes in btrfs_block_rsv_check and if we cannot
because we have a transaction open it will return EAGAIN, so we do not need to
try and commit the transaction again.

Signed-off-by: Josef Bacik <josef@redhat.com>
fs/btrfs/extent-tree.c

index 5395cc63927087b936f556d7e7fdd56e8f927030..6356ef2f0c8091f33bfbf849f7d9e9cf4c62601d 100644 (file)
@@ -3708,7 +3708,6 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans,
                          u64 min_reserved, int min_factor)
 {
        u64 num_bytes = 0;
-       int commit_trans = 0;
        int ret = -ENOSPC;
 
        if (!block_rsv)
@@ -3720,13 +3719,12 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans,
        if (min_reserved > num_bytes)
                num_bytes = min_reserved;
 
-       if (block_rsv->reserved >= num_bytes) {
+       if (block_rsv->reserved >= num_bytes)
                ret = 0;
-       } else {
+       else
                num_bytes -= block_rsv->reserved;
-               commit_trans = 1;
-       }
        spin_unlock(&block_rsv->lock);
+
        if (!ret)
                return 0;
 
@@ -3736,26 +3734,7 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans,
                return 0;
        }
 
-       if (commit_trans) {
-               struct btrfs_space_info *sinfo = block_rsv->space_info;
-
-               if (trans)
-                       return -EAGAIN;
-
-               spin_lock(&sinfo->lock);
-               if (sinfo->bytes_pinned < num_bytes) {
-                       spin_unlock(&sinfo->lock);
-                       return -ENOSPC;
-               }
-               spin_unlock(&sinfo->lock);
-
-               trans = btrfs_join_transaction(root);
-               BUG_ON(IS_ERR(trans));
-               ret = btrfs_commit_transaction(trans, root);
-               return 0;
-       }
-
-       return -ENOSPC;
+       return ret;
 }
 
 int btrfs_block_rsv_migrate(struct btrfs_block_rsv *src_rsv,