summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/nfsclient/nfs_krpc.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/nfsclient/nfs_krpc.c b/sys/nfsclient/nfs_krpc.c
index 0389d29..6dfd46d 100644
--- a/sys/nfsclient/nfs_krpc.c
+++ b/sys/nfsclient/nfs_krpc.c
@@ -603,13 +603,15 @@ tryagain:
if (error == ESTALE)
nfs_purgecache(vp);
/*
- * Skip wcc data on NFS errors for now. NetApp filers
- * return corrupt postop attrs in the wcc data for NFS
- * err EROFS. Not sure if they could return corrupt
- * postop attrs for others errors.
+ * Skip wcc data on non-ENOENT NFS errors for now.
+ * NetApp filers return corrupt postop attrs in the
+ * wcc data for NFS err EROFS. Not sure if they could
+ * return corrupt postop attrs for others errors.
+ * Blocking ENOENT post-op attributes breaks negative
+ * name caching, so always allow it through.
*/
if ((nmp->nm_flag & NFSMNT_NFSV3) &&
- !nfs_skip_wcc_data_onerr) {
+ (!nfs_skip_wcc_data_onerr || error == ENOENT)) {
*mrp = mrep;
*mdp = md;
*dposp = dpos;
OpenPOWER on IntegriCloud