ENUM_BIT(BTRFS_ILOCK_MMAP),
 };
 
-int btrfs_inode_lock(struct inode *inode, unsigned int ilock_flags);
+int btrfs_inode_lock(struct btrfs_inode *inode, unsigned int ilock_flags);
 void btrfs_inode_unlock(struct inode *inode, unsigned int ilock_flags);
 void btrfs_update_inode_bytes(struct btrfs_inode *inode, const u64 add_bytes,
                              const u64 del_bytes);
 
                               (SZ_256K >> PAGE_SHIFT)) << PAGE_SHIFT) - 1;
                cluster_end = min(cluster_end, last_byte);
 
-               btrfs_inode_lock(inode, 0);
+               btrfs_inode_lock(BTRFS_I(inode), 0);
                if (IS_SWAPFILE(inode)) {
                        ret = -ETXTBSY;
                        btrfs_inode_unlock(inode, 0);
                ret = sectors_defragged;
        }
        if (do_compress) {
-               btrfs_inode_lock(inode, 0);
+               btrfs_inode_lock(BTRFS_I(inode), 0);
                BTRFS_I(inode)->defrag_compress = BTRFS_COMPRESS_NONE;
                btrfs_inode_unlock(inode, 0);
        }
 
         * item->readdir_list.
         */
        btrfs_inode_unlock(inode, BTRFS_ILOCK_SHARED);
-       btrfs_inode_lock(inode, 0);
+       btrfs_inode_lock(BTRFS_I(inode), 0);
 
        mutex_lock(&delayed_node->mutex);
        item = __btrfs_first_delayed_insertion_item(delayed_node);
 
        if (nowait)
                ilock_flags |= BTRFS_ILOCK_TRY;
 
-       ret = btrfs_inode_lock(inode, ilock_flags);
+       ret = btrfs_inode_lock(BTRFS_I(inode), ilock_flags);
        if (ret < 0)
                return ret;
 
                ilock_flags |= BTRFS_ILOCK_SHARED;
 
 relock:
-       err = btrfs_inode_lock(inode, ilock_flags);
+       err = btrfs_inode_lock(BTRFS_I(inode), ilock_flags);
        if (err < 0)
                return err;
 
        loff_t count;
        ssize_t ret;
 
-       btrfs_inode_lock(inode, 0);
+       btrfs_inode_lock(BTRFS_I(inode), 0);
        count = encoded->len;
        ret = generic_write_checks_count(iocb, &count);
        if (ret == 0 && count != encoded->len) {
        if (ret)
                goto out;
 
-       btrfs_inode_lock(inode, BTRFS_ILOCK_MMAP);
+       btrfs_inode_lock(BTRFS_I(inode), BTRFS_ILOCK_MMAP);
 
        atomic_inc(&root->log_batch);
 
        bool truncated_block = false;
        bool updated_inode = false;
 
-       btrfs_inode_lock(inode, BTRFS_ILOCK_MMAP);
+       btrfs_inode_lock(BTRFS_I(inode), BTRFS_ILOCK_MMAP);
 
        ret = btrfs_wait_ordered_range(inode, offset, len);
        if (ret)
        if (mode & FALLOC_FL_PUNCH_HOLE)
                return btrfs_punch_hole(file, offset, len);
 
-       btrfs_inode_lock(inode, BTRFS_ILOCK_MMAP);
+       btrfs_inode_lock(BTRFS_I(inode), BTRFS_ILOCK_MMAP);
 
        if (!(mode & FALLOC_FL_KEEP_SIZE) && offset + len > inode->i_size) {
                ret = inode_newsize_ok(inode, offset + len);
                return generic_file_llseek(file, offset, whence);
        case SEEK_DATA:
        case SEEK_HOLE:
-               btrfs_inode_lock(inode, BTRFS_ILOCK_SHARED);
+               btrfs_inode_lock(BTRFS_I(inode), BTRFS_ILOCK_SHARED);
                offset = find_desired_extent(BTRFS_I(inode), offset, whence);
                btrfs_inode_unlock(inode, BTRFS_ILOCK_SHARED);
                break;
        if (check_direct_read(btrfs_sb(inode->i_sb), to, iocb->ki_pos))
                return 0;
 
-       btrfs_inode_lock(inode, BTRFS_ILOCK_SHARED);
+       btrfs_inode_lock(BTRFS_I(inode), BTRFS_ILOCK_SHARED);
 again:
        /*
         * This is similar to what we do for direct IO writes, see the comment
 
  *                  return -EAGAIN
  * BTRFS_ILOCK_MMAP - acquire a write lock on the i_mmap_lock
  */
-int btrfs_inode_lock(struct inode *inode, unsigned int ilock_flags)
+int btrfs_inode_lock(struct btrfs_inode *inode, unsigned int ilock_flags)
 {
        if (ilock_flags & BTRFS_ILOCK_SHARED) {
                if (ilock_flags & BTRFS_ILOCK_TRY) {
-                       if (!inode_trylock_shared(inode))
+                       if (!inode_trylock_shared(&inode->vfs_inode))
                                return -EAGAIN;
                        else
                                return 0;
                }
-               inode_lock_shared(inode);
+               inode_lock_shared(&inode->vfs_inode);
        } else {
                if (ilock_flags & BTRFS_ILOCK_TRY) {
-                       if (!inode_trylock(inode))
+                       if (!inode_trylock(&inode->vfs_inode))
                                return -EAGAIN;
                        else
                                return 0;
                }
-               inode_lock(inode);
+               inode_lock(&inode->vfs_inode);
        }
        if (ilock_flags & BTRFS_ILOCK_MMAP)
-               down_write(&BTRFS_I(inode)->i_mmap_lock);
+               down_write(&inode->i_mmap_lock);
        return 0;
 }
 
 
        file_accessed(iocb->ki_filp);
 
-       btrfs_inode_lock(&inode->vfs_inode, BTRFS_ILOCK_SHARED);
+       btrfs_inode_lock(inode, BTRFS_ILOCK_SHARED);
 
        if (iocb->ki_pos >= inode->vfs_inode.i_size) {
                btrfs_inode_unlock(&inode->vfs_inode, BTRFS_ILOCK_SHARED);
 
                goto out_dput;
        }
 
-       btrfs_inode_lock(inode, 0);
+       btrfs_inode_lock(BTRFS_I(inode), 0);
        err = btrfs_delete_subvolume(dir, dentry);
        btrfs_inode_unlock(inode, 0);
        if (!err)
 
                return -EINVAL;
 
        if (same_inode) {
-               btrfs_inode_lock(src_inode, BTRFS_ILOCK_MMAP);
+               btrfs_inode_lock(BTRFS_I(src_inode), BTRFS_ILOCK_MMAP);
        } else {
                lock_two_nondirectories(src_inode, dst_inode);
                btrfs_double_mmap_lock(src_inode, dst_inode);
 
        if (ret)
                return ret;
 
-       btrfs_inode_lock(&inode->vfs_inode, 0);
+       btrfs_inode_lock(inode, 0);
        for (nr = 0; nr < cluster->nr; nr++) {
                struct extent_state *cached_state = NULL;