btrfs: pass btrfs_inode to btrfs_truncate
authorDavid Sterba <dsterba@suse.com>
Thu, 27 Oct 2022 00:41:32 +0000 (02:41 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 5 Dec 2022 17:00:53 +0000 (18:00 +0100)
The function is for internal interfaces so we should use the
btrfs_inode.

Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/inode.c

index b1369f6..f612c8b 100644 (file)
@@ -124,7 +124,7 @@ static const struct file_operations btrfs_dir_file_operations;
 static struct kmem_cache *btrfs_inode_cachep;
 
 static int btrfs_setsize(struct inode *inode, struct iattr *attr);
-static int btrfs_truncate(struct inode *inode, bool skip_writeback);
+static int btrfs_truncate(struct btrfs_inode *inode, bool skip_writeback);
 static noinline int cow_file_range(struct btrfs_inode *inode,
                                   struct page *locked_page,
                                   u64 start, u64 end, int *page_started,
@@ -5270,7 +5270,7 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)
 
                inode_dio_wait(inode);
 
-               ret = btrfs_truncate(inode, newsize == oldsize);
+               ret = btrfs_truncate(BTRFS_I(inode), newsize == oldsize);
                if (ret && inode->i_nlink) {
                        int err;
 
@@ -8632,16 +8632,16 @@ out_noreserve:
        return ret;
 }
 
-static int btrfs_truncate(struct inode *inode, bool skip_writeback)
+static int btrfs_truncate(struct btrfs_inode *inode, bool skip_writeback)
 {
        struct btrfs_truncate_control control = {
-               .inode = BTRFS_I(inode),
-               .ino = btrfs_ino(BTRFS_I(inode)),
+               .inode = inode,
+               .ino = btrfs_ino(inode),
                .min_type = BTRFS_EXTENT_DATA_KEY,
                .clear_extent_range = true,
        };
-       struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-       struct btrfs_root *root = BTRFS_I(inode)->root;
+       struct btrfs_root *root = inode->root;
+       struct btrfs_fs_info *fs_info = root->fs_info;
        struct btrfs_block_rsv *rsv;
        int ret;
        struct btrfs_trans_handle *trans;
@@ -8649,7 +8649,8 @@ static int btrfs_truncate(struct inode *inode, bool skip_writeback)
        u64 min_size = btrfs_calc_metadata_size(fs_info, 1);
 
        if (!skip_writeback) {
-               ret = btrfs_wait_ordered_range(inode, inode->i_size & (~mask),
+               ret = btrfs_wait_ordered_range(&inode->vfs_inode,
+                                              inode->vfs_inode.i_size & (~mask),
                                               (u64)-1);
                if (ret)
                        return ret;
@@ -8708,34 +8709,32 @@ static int btrfs_truncate(struct inode *inode, bool skip_writeback)
 
        while (1) {
                struct extent_state *cached_state = NULL;
-               const u64 new_size = inode->i_size;
+               const u64 new_size = inode->vfs_inode.i_size;
                const u64 lock_start = ALIGN_DOWN(new_size, fs_info->sectorsize);
 
                control.new_size = new_size;
-               lock_extent(&BTRFS_I(inode)->io_tree, lock_start, (u64)-1,
-                                &cached_state);
+               lock_extent(&inode->io_tree, lock_start, (u64)-1, &cached_state);
                /*
                 * We want to drop from the next block forward in case this new
                 * size is not block aligned since we will be keeping the last
                 * block of the extent just the way it is.
                 */
-               btrfs_drop_extent_map_range(BTRFS_I(inode),
+               btrfs_drop_extent_map_range(inode,
                                            ALIGN(new_size, fs_info->sectorsize),
                                            (u64)-1, false);
 
                ret = btrfs_truncate_inode_items(trans, root, &control);
 
-               inode_sub_bytes(inode, control.sub_bytes);
-               btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), control.last_size);
+               inode_sub_bytes(&inode->vfs_inode, control.sub_bytes);
+               btrfs_inode_safe_disk_i_size_write(inode, control.last_size);
 
-               unlock_extent(&BTRFS_I(inode)->io_tree, lock_start, (u64)-1,
-                             &cached_state);
+               unlock_extent(&inode->io_tree, lock_start, (u64)-1, &cached_state);
 
                trans->block_rsv = &fs_info->trans_block_rsv;
                if (ret != -ENOSPC && ret != -EAGAIN)
                        break;
 
-               ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
+               ret = btrfs_update_inode(trans, root, inode);
                if (ret)
                        break;
 
@@ -8766,7 +8765,7 @@ static int btrfs_truncate(struct inode *inode, bool skip_writeback)
                btrfs_end_transaction(trans);
                btrfs_btree_balance_dirty(fs_info);
 
-               ret = btrfs_truncate_block(BTRFS_I(inode), inode->i_size, 0, 0);
+               ret = btrfs_truncate_block(inode, inode->vfs_inode.i_size, 0, 0);
                if (ret)
                        goto out;
                trans = btrfs_start_transaction(root, 1);
@@ -8774,14 +8773,14 @@ static int btrfs_truncate(struct inode *inode, bool skip_writeback)
                        ret = PTR_ERR(trans);
                        goto out;
                }
-               btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
+               btrfs_inode_safe_disk_i_size_write(inode, 0);
        }
 
        if (trans) {
                int ret2;
 
                trans->block_rsv = &fs_info->trans_block_rsv;
-               ret2 = btrfs_update_inode(trans, root, BTRFS_I(inode));
+               ret2 = btrfs_update_inode(trans, root, inode);
                if (ret2 && !ret)
                        ret = ret2;
 
@@ -8807,7 +8806,7 @@ out:
         * extents beyond i_size to drop.
         */
        if (control.extents_found > 0)
-               btrfs_set_inode_full_sync(BTRFS_I(inode));
+               btrfs_set_inode_full_sync(inode);
 
        return ret;
 }