fuse: notify: don't move pages
[firefly-linux-kernel-4.4.55.git] / fs / stat.c
index 14f45459c83d650fb09c4069d5dd7db907a67b95..d0ea7ef75e264ef2cccf2c100d4e3a8c7393121c 100644 (file)
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -37,17 +37,17 @@ void generic_fillattr(struct inode *inode, struct kstat *stat)
 
 EXPORT_SYMBOL(generic_fillattr);
 
-int vfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
+int vfs_getattr(struct path *path, struct kstat *stat)
 {
-       struct inode *inode = dentry->d_inode;
+       struct inode *inode = path->dentry->d_inode;
        int retval;
 
-       retval = security_inode_getattr(mnt, dentry);
+       retval = security_inode_getattr(path->mnt, path->dentry);
        if (retval)
                return retval;
 
        if (inode->i_op->getattr)
-               return inode->i_op->getattr(mnt, dentry, stat);
+               return inode->i_op->getattr(path->mnt, path->dentry, stat);
 
        generic_fillattr(inode, stat);
        return 0;
@@ -61,8 +61,7 @@ int vfs_fstat(unsigned int fd, struct kstat *stat)
        int error = -EBADF;
 
        if (f.file) {
-               error = vfs_getattr(f.file->f_path.mnt, f.file->f_path.dentry,
-                                   stat);
+               error = vfs_getattr(&f.file->f_path, stat);
                fdput(f);
        }
        return error;
@@ -89,7 +88,7 @@ retry:
        if (error)
                goto out;
 
-       error = vfs_getattr(path.mnt, path.dentry, stat);
+       error = vfs_getattr(&path, stat);
        path_put(&path);
        if (retry_estale(error, lookup_flags)) {
                lookup_flags |= LOOKUP_REVAL;
@@ -448,9 +447,8 @@ void inode_add_bytes(struct inode *inode, loff_t bytes)
 
 EXPORT_SYMBOL(inode_add_bytes);
 
-void inode_sub_bytes(struct inode *inode, loff_t bytes)
+void __inode_sub_bytes(struct inode *inode, loff_t bytes)
 {
-       spin_lock(&inode->i_lock);
        inode->i_blocks -= bytes >> 9;
        bytes &= 511;
        if (inode->i_bytes < bytes) {
@@ -458,6 +456,14 @@ void inode_sub_bytes(struct inode *inode, loff_t bytes)
                inode->i_bytes += 512;
        }
        inode->i_bytes -= bytes;
+}
+
+EXPORT_SYMBOL(__inode_sub_bytes);
+
+void inode_sub_bytes(struct inode *inode, loff_t bytes)
+{
+       spin_lock(&inode->i_lock);
+       __inode_sub_bytes(inode, bytes);
        spin_unlock(&inode->i_lock);
 }