]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
btrfs: Make (__)btrfs_add_inode_defrag take btrfs_inode
authorNikolay Borisov <n.borisov.lkml@gmail.com>
Mon, 20 Feb 2017 11:50:43 +0000 (13:50 +0200)
committerDavid Sterba <dsterba@suse.com>
Tue, 28 Feb 2017 10:30:07 +0000 (11:30 +0100)
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.h
fs/btrfs/file.c
fs/btrfs/inode.c

index 7f7f3b60a73d20ee8352f340feae94607e0fc80c..5246cbe4c17f83919d5d350ac5e111cccb366ada 100644 (file)
@@ -3215,7 +3215,7 @@ ssize_t btrfs_dedupe_file_range(struct file *src_file, u64 loff, u64 olen,
 int btrfs_auto_defrag_init(void);
 void btrfs_auto_defrag_exit(void);
 int btrfs_add_inode_defrag(struct btrfs_trans_handle *trans,
-                          struct inode *inode);
+                          struct btrfs_inode *inode);
 int btrfs_run_defrag_inodes(struct btrfs_fs_info *fs_info);
 void btrfs_cleanup_defrag_inodes(struct btrfs_fs_info *fs_info);
 int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync);
index 0e30d14b4916aeef5c414f119bad4e33adb4bdd6..63645e86ad953519933947b36423c27eff663c7b 100644 (file)
@@ -92,10 +92,10 @@ static int __compare_inode_defrag(struct inode_defrag *defrag1,
  * If an existing record is found the defrag item you
  * pass in is freed
  */
-static int __btrfs_add_inode_defrag(struct inode *inode,
+static int __btrfs_add_inode_defrag(struct btrfs_inode *inode,
                                    struct inode_defrag *defrag)
 {
-       struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+       struct btrfs_fs_info *fs_info = btrfs_sb(inode->vfs_inode.i_sb);
        struct inode_defrag *entry;
        struct rb_node **p;
        struct rb_node *parent = NULL;
@@ -123,7 +123,7 @@ static int __btrfs_add_inode_defrag(struct inode *inode,
                        return -EEXIST;
                }
        }
-       set_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags);
+       set_bit(BTRFS_INODE_IN_DEFRAG, &inode->runtime_flags);
        rb_link_node(&defrag->rb_node, parent, p);
        rb_insert_color(&defrag->rb_node, &fs_info->defrag_inodes);
        return 0;
@@ -145,10 +145,10 @@ static inline int __need_auto_defrag(struct btrfs_fs_info *fs_info)
  * enabled
  */
 int btrfs_add_inode_defrag(struct btrfs_trans_handle *trans,
-                          struct inode *inode)
+                          struct btrfs_inode *inode)
 {
-       struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-       struct btrfs_root *root = BTRFS_I(inode)->root;
+       struct btrfs_fs_info *fs_info = btrfs_sb(inode->vfs_inode.i_sb);
+       struct btrfs_root *root = inode->root;
        struct inode_defrag *defrag;
        u64 transid;
        int ret;
@@ -156,24 +156,24 @@ int btrfs_add_inode_defrag(struct btrfs_trans_handle *trans,
        if (!__need_auto_defrag(fs_info))
                return 0;
 
-       if (test_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags))
+       if (test_bit(BTRFS_INODE_IN_DEFRAG, &inode->runtime_flags))
                return 0;
 
        if (trans)
                transid = trans->transid;
        else
-               transid = BTRFS_I(inode)->root->last_trans;
+               transid = inode->root->last_trans;
 
        defrag = kmem_cache_zalloc(btrfs_inode_defrag_cachep, GFP_NOFS);
        if (!defrag)
                return -ENOMEM;
 
-       defrag->ino = btrfs_ino(BTRFS_I(inode));
+       defrag->ino = btrfs_ino(inode);
        defrag->transid = transid;
        defrag->root = root->root_key.objectid;
 
        spin_lock(&fs_info->defrag_inodes_lock);
-       if (!test_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags)) {
+       if (!test_bit(BTRFS_INODE_IN_DEFRAG, &inode->runtime_flags)) {
                /*
                 * If we set IN_DEFRAG flag and evict the inode from memory,
                 * and then re-read this inode, this new inode doesn't have
@@ -208,7 +208,7 @@ static void btrfs_requeue_inode_defrag(struct inode *inode,
         * them together.
         */
        spin_lock(&fs_info->defrag_inodes_lock);
-       ret = __btrfs_add_inode_defrag(inode, defrag);
+       ret = __btrfs_add_inode_defrag(BTRFS_I(inode), defrag);
        spin_unlock(&fs_info->defrag_inodes_lock);
        if (ret)
                goto out;
index dd0f1abdacd256128515da151919304e8881bcb2..c396533fd3e52b43aa145922eacdd6861ca8a326 100644 (file)
@@ -389,12 +389,12 @@ static inline int inode_need_compress(struct inode *inode)
        return 0;
 }
 
-static inline void inode_should_defrag(struct inode *inode,
+static inline void inode_should_defrag(struct btrfs_inode *inode,
                u64 start, u64 end, u64 num_bytes, u64 small_write)
 {
        /* If this is a small write inside eof, kick off a defrag */
        if (num_bytes < small_write &&
-           (start > 0 || end + 1 < BTRFS_I(inode)->disk_i_size))
+           (start > 0 || end + 1 < inode->disk_i_size))
                btrfs_add_inode_defrag(NULL, inode);
 }
 
@@ -440,7 +440,8 @@ static noinline void compress_file_range(struct inode *inode,
        int compress_type = fs_info->compress_type;
        int redirty = 0;
 
-       inode_should_defrag(inode, start, end, end - start + 1, SZ_16K);
+       inode_should_defrag(BTRFS_I(inode), start, end, end - start + 1,
+                       SZ_16K);
 
        actual_end = min_t(u64, isize, end + 1);
 again:
@@ -943,7 +944,7 @@ static noinline int cow_file_range(struct inode *inode,
        num_bytes = max(blocksize,  num_bytes);
        disk_num_bytes = num_bytes;
 
-       inode_should_defrag(inode, start, end, num_bytes, SZ_64K);
+       inode_should_defrag(BTRFS_I(inode), start, end, num_bytes, SZ_64K);
 
        if (start == 0) {
                /* lets try to make an inline extent */