diff options
-rw-r--r-- | fs/nfs/nfs4proc.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index b7babb3b8a4d..66fd901d5fae 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -2224,8 +2224,15 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, | |||
2224 | seq = raw_seqcount_begin(&sp->so_reclaim_seqcount); | 2224 | seq = raw_seqcount_begin(&sp->so_reclaim_seqcount); |
2225 | 2225 | ||
2226 | ret = _nfs4_proc_open(opendata); | 2226 | ret = _nfs4_proc_open(opendata); |
2227 | if (ret != 0) | 2227 | if (ret != 0) { |
2228 | if (ret == -ENOENT) { | ||
2229 | d_drop(opendata->dentry); | ||
2230 | d_add(opendata->dentry, NULL); | ||
2231 | nfs_set_verifier(opendata->dentry, | ||
2232 | nfs_save_change_attribute(opendata->dir->d_inode)); | ||
2233 | } | ||
2228 | goto out; | 2234 | goto out; |
2235 | } | ||
2229 | 2236 | ||
2230 | state = nfs4_opendata_to_nfs4_state(opendata); | 2237 | state = nfs4_opendata_to_nfs4_state(opendata); |
2231 | ret = PTR_ERR(state); | 2238 | ret = PTR_ERR(state); |