diff options
Diffstat (limited to 'fs/nfs/super.c')
-rw-r--r-- | fs/nfs/super.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index ee26316ad1f4..f4cbf0c306c6 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
@@ -431,7 +431,15 @@ static int nfs_statfs(struct dentry *dentry, struct kstatfs *buf) | |||
431 | goto out_err; | 431 | goto out_err; |
432 | 432 | ||
433 | error = server->nfs_client->rpc_ops->statfs(server, fh, &res); | 433 | error = server->nfs_client->rpc_ops->statfs(server, fh, &res); |
434 | if (unlikely(error == -ESTALE)) { | ||
435 | struct dentry *pd_dentry; | ||
434 | 436 | ||
437 | pd_dentry = dget_parent(dentry); | ||
438 | if (pd_dentry != NULL) { | ||
439 | nfs_zap_caches(pd_dentry->d_inode); | ||
440 | dput(pd_dentry); | ||
441 | } | ||
442 | } | ||
435 | nfs_free_fattr(res.fattr); | 443 | nfs_free_fattr(res.fattr); |
436 | if (error < 0) | 444 | if (error < 0) |
437 | goto out_err; | 445 | goto out_err; |
@@ -655,6 +663,13 @@ static void nfs_show_mount_options(struct seq_file *m, struct nfs_server *nfss, | |||
655 | 663 | ||
656 | if (nfss->options & NFS_OPTION_FSCACHE) | 664 | if (nfss->options & NFS_OPTION_FSCACHE) |
657 | seq_printf(m, ",fsc"); | 665 | seq_printf(m, ",fsc"); |
666 | |||
667 | if (nfss->flags & NFS_MOUNT_LOOKUP_CACHE_NONEG) { | ||
668 | if (nfss->flags & NFS_MOUNT_LOOKUP_CACHE_NONE) | ||
669 | seq_printf(m, ",lookupcache=none"); | ||
670 | else | ||
671 | seq_printf(m, ",lookupcache=pos"); | ||
672 | } | ||
658 | } | 673 | } |
659 | 674 | ||
660 | /* | 675 | /* |