]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
btrfs: simplify btrfs_wait_cache_io prototype
authorJeff Mahoney <jeffm@suse.com>
Fri, 9 Sep 2016 16:09:35 +0000 (12:09 -0400)
committerDavid Sterba <dsterba@suse.com>
Tue, 6 Dec 2016 15:06:59 +0000 (16:06 +0100)
With the exception of the one case where btrfs_wait_cache_io is called
without a block group, it's called with the same arguments.  The root
argument is only used in the special case, so let's factor out the core
and simplify the call in the normal case to require a trans, block group,
and path.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent-tree.c
fs/btrfs/free-space-cache.c
fs/btrfs/free-space-cache.h

index a358aaaf43a61cbfa903f2ea228c4d88902cb103..d0c5d5d92d1cea0d0ada8cdf764bc251c343f354 100644 (file)
@@ -3610,9 +3610,7 @@ again:
                 */
                if (!list_empty(&cache->io_list)) {
                        list_del_init(&cache->io_list);
-                       btrfs_wait_cache_io(root, trans, cache,
-                                           &cache->io_ctl, path,
-                                           cache->key.objectid);
+                       btrfs_wait_cache_io(trans, cache, path);
                        btrfs_put_block_group(cache);
                }
 
@@ -3767,9 +3765,7 @@ int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans,
                if (!list_empty(&cache->io_list)) {
                        spin_unlock(&cur_trans->dirty_bgs_lock);
                        list_del_init(&cache->io_list);
-                       btrfs_wait_cache_io(root, trans, cache,
-                                           &cache->io_ctl, path,
-                                           cache->key.objectid);
+                       btrfs_wait_cache_io(trans, cache, path);
                        btrfs_put_block_group(cache);
                        spin_lock(&cur_trans->dirty_bgs_lock);
                }
@@ -3839,8 +3835,7 @@ int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans,
                cache = list_first_entry(io, struct btrfs_block_group_cache,
                                         io_list);
                list_del_init(&cache->io_list);
-               btrfs_wait_cache_io(root, trans, cache,
-                                   &cache->io_ctl, path, cache->key.objectid);
+               btrfs_wait_cache_io(trans, cache, path);
                btrfs_put_block_group(cache);
        }
 
@@ -10383,9 +10378,7 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans,
                WARN_ON(!IS_ERR(inode) && inode != block_group->io_ctl.inode);
 
                spin_unlock(&trans->transaction->dirty_bgs_lock);
-               btrfs_wait_cache_io(root, trans, block_group,
-                                   &block_group->io_ctl, path,
-                                   block_group->key.objectid);
+               btrfs_wait_cache_io(trans, block_group, path);
                btrfs_put_block_group(block_group);
                spin_lock(&trans->transaction->dirty_bgs_lock);
        }
index e93763673b05209e604b8fce99e1e1a1711058d0..ab7e2b97f49ef9a6b206d0e3a541a28adccaa2b1 100644 (file)
@@ -42,6 +42,10 @@ static int link_free_space(struct btrfs_free_space_ctl *ctl,
                           struct btrfs_free_space *info);
 static void unlink_free_space(struct btrfs_free_space_ctl *ctl,
                              struct btrfs_free_space *info);
+static int btrfs_wait_cache_io_root(struct btrfs_root *root,
+                            struct btrfs_trans_handle *trans,
+                            struct btrfs_io_ctl *io_ctl,
+                            struct btrfs_path *path);
 
 static struct inode *__lookup_free_space_inode(struct btrfs_root *root,
                                               struct btrfs_path *path,
@@ -244,9 +248,7 @@ int btrfs_truncate_free_space_cache(struct btrfs_root *root,
                if (!list_empty(&block_group->io_list)) {
                        list_del_init(&block_group->io_list);
 
-                       btrfs_wait_cache_io(root, trans, block_group,
-                                           &block_group->io_ctl, path,
-                                           block_group->key.objectid);
+                       btrfs_wait_cache_io(trans, block_group, path);
                        btrfs_put_block_group(block_group);
                }
 
@@ -1139,11 +1141,11 @@ cleanup_write_cache_enospc(struct inode *inode,
                             GFP_NOFS);
 }
 
-int btrfs_wait_cache_io(struct btrfs_root *root,
-                       struct btrfs_trans_handle *trans,
-                       struct btrfs_block_group_cache *block_group,
-                       struct btrfs_io_ctl *io_ctl,
-                       struct btrfs_path *path, u64 offset)
+static int __btrfs_wait_cache_io(struct btrfs_root *root,
+                                struct btrfs_trans_handle *trans,
+                                struct btrfs_block_group_cache *block_group,
+                                struct btrfs_io_ctl *io_ctl,
+                                struct btrfs_path *path, u64 offset)
 {
        int ret;
        struct inode *inode = io_ctl->inode;
@@ -1154,9 +1156,6 @@ int btrfs_wait_cache_io(struct btrfs_root *root,
 
        fs_info = btrfs_sb(inode->i_sb);
 
-       if (block_group)
-               root = fs_info->tree_root;
-
        /* Flush the dirty pages in the cache file. */
        ret = flush_dirty_cache(inode);
        if (ret)
@@ -1207,6 +1206,23 @@ out:
 
 }
 
+static int btrfs_wait_cache_io_root(struct btrfs_root *root,
+                                   struct btrfs_trans_handle *trans,
+                                   struct btrfs_io_ctl *io_ctl,
+                                   struct btrfs_path *path)
+{
+       return __btrfs_wait_cache_io(root, trans, NULL, io_ctl, path, 0);
+}
+
+int btrfs_wait_cache_io(struct btrfs_trans_handle *trans,
+                       struct btrfs_block_group_cache *block_group,
+                       struct btrfs_path *path)
+{
+       return __btrfs_wait_cache_io(block_group->fs_info->tree_root, trans,
+                                    block_group, &block_group->io_ctl,
+                                    path, block_group->key.objectid);
+}
+
 /**
  * __btrfs_write_out_cache - write out cached info to an inode
  * @root - the root the inode belongs to
@@ -3541,7 +3557,7 @@ int btrfs_write_out_ino_cache(struct btrfs_root *root,
                 * with or without an error.
                 */
                release_metadata = false;
-               ret = btrfs_wait_cache_io(root, trans, NULL, &io_ctl, path, 0);
+               ret = btrfs_wait_cache_io_root(root, trans, &io_ctl, path);
        }
 
        if (ret) {
index 70e7a7cc15f3ef9b68a6f3eaf02f4e91203b1fd1..f39ba850b5669d565d2844b0d2cfa506b0723baa 100644 (file)
@@ -67,11 +67,9 @@ int btrfs_truncate_free_space_cache(struct btrfs_root *root,
                                    struct inode *inode);
 int load_free_space_cache(struct btrfs_fs_info *fs_info,
                          struct btrfs_block_group_cache *block_group);
-int btrfs_wait_cache_io(struct btrfs_root *root,
-                       struct btrfs_trans_handle *trans,
+int btrfs_wait_cache_io(struct btrfs_trans_handle *trans,
                        struct btrfs_block_group_cache *block_group,
-                       struct btrfs_io_ctl *io_ctl,
-                       struct btrfs_path *path, u64 offset);
+                       struct btrfs_path *path);
 int btrfs_write_out_cache(struct btrfs_fs_info *fs_info,
                          struct btrfs_trans_handle *trans,
                          struct btrfs_block_group_cache *block_group,