]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - fs/bad_inode.c
powerpc/perf: Avoid spurious PMU interrupts after idle
[mirror_ubuntu-zesty-kernel.git] / fs / bad_inode.c
index 3ba385eaa26ee0131e5e3eaf7bfed77290222942..5f685c8192981864c3e273acce95dacc40494367 100644 (file)
@@ -100,25 +100,52 @@ static int bad_inode_setattr(struct dentry *direntry, struct iattr *attrs)
        return -EIO;
 }
 
-static int bad_inode_setxattr(struct dentry *dentry, struct inode *inode,
-               const char *name, const void *value, size_t size, int flags)
+static ssize_t bad_inode_listxattr(struct dentry *dentry, char *buffer,
+                       size_t buffer_size)
+{
+       return -EIO;
+}
+
+static const char *bad_inode_get_link(struct dentry *dentry,
+                                     struct inode *inode,
+                                     struct delayed_call *done)
+{
+       return ERR_PTR(-EIO);
+}
+
+static struct posix_acl *bad_inode_get_acl(struct inode *inode, int type)
+{
+       return ERR_PTR(-EIO);
+}
+
+static int bad_inode_fiemap(struct inode *inode,
+                           struct fiemap_extent_info *fieinfo, u64 start,
+                           u64 len)
 {
        return -EIO;
 }
 
-static ssize_t bad_inode_getxattr(struct dentry *dentry, struct inode *inode,
-                       const char *name, void *buffer, size_t size)
+static int bad_inode_update_time(struct inode *inode, struct timespec *time,
+                                int flags)
 {
        return -EIO;
 }
 
-static ssize_t bad_inode_listxattr(struct dentry *dentry, char *buffer,
-                       size_t buffer_size)
+static int bad_inode_atomic_open(struct inode *inode, struct dentry *dentry,
+                                struct file *file, unsigned int open_flag,
+                                umode_t create_mode, int *opened)
+{
+       return -EIO;
+}
+
+static int bad_inode_tmpfile(struct inode *inode, struct dentry *dentry,
+                            umode_t mode)
 {
        return -EIO;
 }
 
-static int bad_inode_removexattr(struct dentry *dentry, const char *name)
+static int bad_inode_set_acl(struct inode *inode, struct posix_acl *acl,
+                            int type)
 {
        return -EIO;
 }
@@ -133,19 +160,19 @@ static const struct inode_operations bad_inode_ops =
        .mkdir          = bad_inode_mkdir,
        .rmdir          = bad_inode_rmdir,
        .mknod          = bad_inode_mknod,
-       .rename2        = bad_inode_rename2,
+       .rename         = bad_inode_rename2,
        .readlink       = bad_inode_readlink,
-       /* follow_link must be no-op, otherwise unmounting this inode
-          won't work */
-       /* put_link returns void */
-       /* truncate returns void */
        .permission     = bad_inode_permission,
        .getattr        = bad_inode_getattr,
        .setattr        = bad_inode_setattr,
-       .setxattr       = bad_inode_setxattr,
-       .getxattr       = bad_inode_getxattr,
        .listxattr      = bad_inode_listxattr,
-       .removexattr    = bad_inode_removexattr,
+       .get_link       = bad_inode_get_link,
+       .get_acl        = bad_inode_get_acl,
+       .fiemap         = bad_inode_fiemap,
+       .update_time    = bad_inode_update_time,
+       .atomic_open    = bad_inode_atomic_open,
+       .tmpfile        = bad_inode_tmpfile,
+       .set_acl        = bad_inode_set_acl,
 };
 
 
@@ -173,8 +200,9 @@ void make_bad_inode(struct inode *inode)
 
        inode->i_mode = S_IFREG;
        inode->i_atime = inode->i_mtime = inode->i_ctime =
-               current_fs_time(inode->i_sb);
+               current_time(inode);
        inode->i_op = &bad_inode_ops;   
+       inode->i_opflags &= ~IOP_XATTR;
        inode->i_fop = &bad_file_ops;   
 }
 EXPORT_SYMBOL(make_bad_inode);