diff options
Diffstat (limited to 'fs/nfs/inode.c')
-rw-r--r-- | fs/nfs/inode.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 5f59a2df21aa..86eefbafb7b4 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -396,7 +396,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr) | |||
396 | dprintk("NFS: nfs_fhget(%s/%Ld ct=%d)\n", | 396 | dprintk("NFS: nfs_fhget(%s/%Ld ct=%d)\n", |
397 | inode->i_sb->s_id, | 397 | inode->i_sb->s_id, |
398 | (long long)NFS_FILEID(inode), | 398 | (long long)NFS_FILEID(inode), |
399 | atomic_read(&inode->i_count)); | 399 | inode->i_count); |
400 | 400 | ||
401 | out: | 401 | out: |
402 | return inode; | 402 | return inode; |
@@ -1153,7 +1153,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) | |||
1153 | 1153 | ||
1154 | dfprintk(VFS, "NFS: %s(%s/%ld ct=%d info=0x%x)\n", | 1154 | dfprintk(VFS, "NFS: %s(%s/%ld ct=%d info=0x%x)\n", |
1155 | __func__, inode->i_sb->s_id, inode->i_ino, | 1155 | __func__, inode->i_sb->s_id, inode->i_ino, |
1156 | atomic_read(&inode->i_count), fattr->valid); | 1156 | inode->i_count, fattr->valid); |
1157 | 1157 | ||
1158 | if ((fattr->valid & NFS_ATTR_FATTR_FILEID) && nfsi->fileid != fattr->fileid) | 1158 | if ((fattr->valid & NFS_ATTR_FATTR_FILEID) && nfsi->fileid != fattr->fileid) |
1159 | goto out_fileid; | 1159 | goto out_fileid; |
@@ -1395,11 +1395,18 @@ struct inode *nfs_alloc_inode(struct super_block *sb) | |||
1395 | return &nfsi->vfs_inode; | 1395 | return &nfsi->vfs_inode; |
1396 | } | 1396 | } |
1397 | 1397 | ||
1398 | void nfs_destroy_inode(struct inode *inode) | 1398 | static void nfs_i_callback(struct rcu_head *head) |
1399 | { | 1399 | { |
1400 | struct inode *inode = container_of(head, struct inode, i_rcu); | ||
1401 | INIT_LIST_HEAD(&inode->i_dentry); | ||
1400 | kmem_cache_free(nfs_inode_cachep, NFS_I(inode)); | 1402 | kmem_cache_free(nfs_inode_cachep, NFS_I(inode)); |
1401 | } | 1403 | } |
1402 | 1404 | ||
1405 | void nfs_destroy_inode(struct inode *inode) | ||
1406 | { | ||
1407 | call_rcu(&inode->i_rcu, nfs_i_callback); | ||
1408 | } | ||
1409 | |||
1403 | static inline void nfs4_init_once(struct nfs_inode *nfsi) | 1410 | static inline void nfs4_init_once(struct nfs_inode *nfsi) |
1404 | { | 1411 | { |
1405 | #ifdef CONFIG_NFS_V4 | 1412 | #ifdef CONFIG_NFS_V4 |