]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/nfs/inode.c
Merge tag 'mac80211-for-net-2020-02-14' of git://git.kernel.org/pub/scm/linux/kernel...
[linux.git] / fs / nfs / inode.c
index b0b4b9f303fd85a090dfaab4d3b904ac222c6243..1309e6f47f3d69e3d8f24d466a15814aa03fff28 100644 (file)
@@ -1061,7 +1061,7 @@ struct nfs_open_context *nfs_find_open_context(struct inode *inode, const struct
 
        rcu_read_lock();
        list_for_each_entry_rcu(pos, &nfsi->open_files, list) {
-               if (cred != NULL && pos->cred != cred)
+               if (cred != NULL && cred_fscmp(pos->cred, cred) != 0)
                        continue;
                if ((pos->mode & (FMODE_READ|FMODE_WRITE)) != mode)
                        continue;
@@ -1156,7 +1156,13 @@ __nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
                dfprintk(PAGECACHE, "nfs_revalidate_inode: (%s/%Lu) getattr failed, error=%d\n",
                         inode->i_sb->s_id,
                         (unsigned long long)NFS_FILEID(inode), status);
-               if (status == -ESTALE) {
+               switch (status) {
+               case -ETIMEDOUT:
+                       /* A soft timeout occurred. Use cached information? */
+                       if (server->flags & NFS_MOUNT_SOFTREVAL)
+                               status = 0;
+                       break;
+               case -ESTALE:
                        nfs_zap_caches(inode);
                        if (!S_ISDIR(inode->i_mode))
                                set_bit(NFS_INO_STALE, &NFS_I(inode)->flags);