static const struct inode_operations btrfs_dir_inode_operations;
 static const struct inode_operations btrfs_symlink_inode_operations;
-static const struct inode_operations btrfs_dir_ro_inode_operations;
 static const struct inode_operations btrfs_special_inode_operations;
 static const struct inode_operations btrfs_file_inode_operations;
 static const struct address_space_operations btrfs_aops;
        set_bit(BTRFS_INODE_DUMMY, &BTRFS_I(inode)->runtime_flags);
 
        inode->i_ino = BTRFS_EMPTY_SUBVOL_DIR_OBJECTID;
-       inode->i_op = &btrfs_dir_ro_inode_operations;
+       /*
+        * We only need lookup, the rest is read-only and there's no inode
+        * associated with the dentry
+        */
+       inode->i_op = &simple_dir_inode_operations;
        inode->i_opflags &= ~IOP_XATTR;
        inode->i_fop = &simple_dir_operations;
        inode->i_mode = S_IFDIR | S_IRUGO | S_IWUSR | S_IXUGO;
        .update_time    = btrfs_update_time,
        .tmpfile        = btrfs_tmpfile,
 };
-static const struct inode_operations btrfs_dir_ro_inode_operations = {
-       .lookup         = btrfs_lookup,
-       .permission     = btrfs_permission,
-       .update_time    = btrfs_update_time,
-};
 
 static const struct file_operations btrfs_dir_file_operations = {
        .llseek         = generic_file_llseek,