From: Jeff Mahoney <je...@suse.com>

btrfs_truncate_free_space_cache always allocates a btrfs_path structure
but only uses it when the caller passes a block group.  Let's move the
allocation and free into the conditional.

Signed-off-by: Jeff Mahoney <je...@suse.com>
---
 fs/btrfs/free-space-cache.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index a1e15f6..5240163 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -228,15 +228,14 @@ int btrfs_truncate_free_space_cache(struct 
btrfs_trans_handle *trans,
 {
        struct btrfs_root *root = BTRFS_I(inode)->root;
        int ret = 0;
-       struct btrfs_path *path = btrfs_alloc_path();
        bool locked = false;
 
-       if (!path) {
-               ret = -ENOMEM;
-               goto fail;
-       }
-
        if (block_group) {
+               struct btrfs_path *path = btrfs_alloc_path();
+               if (!path) {
+                       ret = -ENOMEM;
+                       goto fail;
+               }
                locked = true;
                mutex_lock(&trans->transaction->cache_write_mutex);
                if (!list_empty(&block_group->io_list)) {
@@ -253,8 +252,8 @@ int btrfs_truncate_free_space_cache(struct 
btrfs_trans_handle *trans,
                spin_lock(&block_group->lock);
                block_group->disk_cache_state = BTRFS_DC_CLEAR;
                spin_unlock(&block_group->lock);
+               btrfs_free_path(path);
        }
-       btrfs_free_path(path);
 
        btrfs_i_size_write(inode, 0);
        truncate_pagecache(inode, 0);
-- 
2.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to